Automation of contact workflow and automated service agents in contact center system

ABSTRACT

Systems for providing a contact center system detect patterns in the behavior of service agent users and customers having a customer service issue. The system records activity data describing interactions of the users with a virtualized contact center and with each other; the activity data is aggregated and then analyzed (e.g., using a machine learning engine) to measure one or more metrics that define a behavior pattern. The analysis identifies an intent expressed by customers having a common issue, and further identifies attributes of the intent as well as the actions taken by the service agents in response to the intent. The system uses the analysis to generate a workflow of potential interactions that resolve the issue. The system automates the workflow by generating and deploying a computerized service agent configured to interact with customers of a contact center and execute the workflow.

BACKGROUND

Generally described, computing devices utilize a communication network,or a series of communication networks, to exchange data. Companies andorganizations operate computer networks that interconnect a number ofcomputing devices to support operations or provide services to thirdparties. The computing systems may be located in a single geographiclocation or located in multiple, distinct geographic locations (e.g.,interconnected via private or public communication networks).Specifically, data centers or data processing centers, herein generallyreferred to as a “data center,” may include a number of interconnectedcomputing systems to provide computing resources to users of the datacenter. The data centers may be private data centers operated on behalfof an organization or public data centers operated on behalf of, or forthe benefit of, the general public.

A service provider can use the physical computing resources of datacenters to implement a computing environment that receives connectionsfrom remote computing devices over one or more communication networks,such as the Internet. Security services can control these connections,and the service provider can make various remote computing servicesavailable to authorized users of connected devices. Some computingresource service providers offer contact center systems and servicesthat implement, in the data center resources, virtualized contactcenters for connecting customers and other individuals and entities toservice agents who are trained to solve customer service issues. Contactcenters can facilitate contacts on various communication platforms, suchas voice calls, online chat sessions, and the like.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth with reference to the accompanyingfigures. The use of the same reference numbers in different figuresindicates similar or identical items or features.

FIG. 1 is a diagram of an example system for providing a contact centersystem having automated generation of computerized service agents, inaccordance with some embodiments of the disclosed subject matter.

FIG. 2 is a diagram of an example computer system that may be used topractice at least one embodiment of the present disclosure.

FIG. 3 is a flowchart of an example method for automating identificationof a customer intent, service agent actions that respond to the intent,and a workflow for a computerized service agent to apply when serving acustomer contact having the intent.

FIG. 4 is a diagram of an example embodiment of an intent constructorautomatically identifying intents, intent attributes, and actions fromrecorded interactions and other contact center data.

FIG. 5 is a flowchart of another example method for automaticallygenerating a workflow for an intent.

FIG. 6 is a diagram of an example set of workflows executable by acorresponding set of computerized service agents.

FIG. 7 is a flowchart of an example method for incorporating userfeedback into a data model for a computerized service agent.

FIG. 8 is a flowchart of another example method for incorporating userfeedback into a data model for a computerized service agent.

FIG. 9 is a flowchart of an example method for creating a workflow and acomputerized service agent for automating identification of a customerintent, service agent actions that respond to the intent, and a workflowfor a computerized service agent to apply when serving a customercontact having the intent.

FIG. 10 is a block diagram depicting functional components of ageneral-purpose computing device.

DETAILED DESCRIPTION

In the following description, various embodiments will be described. Forpurposes of explanation, specific configurations and details are setforth in order to provide a thorough understanding of the embodiments.However, it will also be apparent to one skilled in the art that theembodiments may be practiced without the specific details. Furthermore,well-known features may be omitted or simplified in order not to obscurethe embodiments being described.

Techniques described and suggested herein relate to automaticallyidentifying and/or executing tasks of a contact center system, whichtasks are associated with satisfying a customer service issue expressedby an entity contacting a virtualized contact center for help(hereinafter a “customer,” though other types of entities can contact acontact center). Moreover, the described systems and methods generate acontact workflow comprising workflow states that each includeinstructions for executing the tasks or sub-tasks of the tasks; theworkflow states are connected in a progression by which execution of thecontact workflow is expected to resolve the customer service issue. Acomputing resource service provider, such as a company or otherorganization, may operate computing resources in which the contactcenter system is implemented and made available to users of thecomputing resource service provider. For example, the computing resourceservice provider may establish a computing environment using physicaland/or virtual communication networks, sub-networks, physical andvirtual network interfaces, application programming interfaces (APIs),consoles and other user interfaces, and other physical and/orvirtualized computing resources; the computing environment may includeor provide access to the contact center system, and users of remotecomputing devices can connect to the computing environment and use thevarious services of the contact center system. The computing environmentand/or the contact center system can have access controls and othersecurity measures associated therewith; a user can subscribe to variouscomputing services in order to obtain access to the contact centersystem, and account data for the user may be used to determine whether auser has permission to access, add, delete, read, or modify resources inthe computing environment. Additionally, the contact center system canuse the user's subscriptions, or other access methods, to applyfunctionality of other computing resource service provider services tothe contact workflow and automated service agent generation processesdescribed herein.

The contact center system provides subsystems for deploying a contactcenter for a user, enabling service agents of the user to log into thecontact center, enabling customers to initiate a contact at the contactcenter, recording activity associated with the contact, analyzingrecorded data to identify metrics, patterns, etc., and generatingcontact workflows and automated service agents. Actions performed on thecontact center system or by the contact center system with any otherservices may be stored.

Any of the recorded activity may be associated with some or all of theentities that the activity involves. The system may store the activitydata in a log or add it to a substantially real-time activity feed foreach of the associated entities. Thus, each entity may have associatedtherewith (e.g., stored in its user account data) a list of all theactions that it has performed or has had performed on it. The recordsmay be time-limited, and may be organized in any suitable fashionenabling sorting, filtering, searching, exporting, etc. In some cases,such as in a recording of a call or a transcription thereof, the logdescribes the contact's “workflow” as executed within the contact centersystem.

A contact workflow is the course of operations performed to satisfy acustomer service issue presented in a contact. In some cases, certainoperations may be required to be performed in order to complete thecontact workflow (i.e., to satisfy the contact). In these cases, atleast a portion of the contact workflow—the tasks that must be completedto complete the required operations—may be automatically executable,depending on the implementation of a computerized agent to execute them.However, building and configuring automated service agents (aka “bots”)to handle customer problems is expensive and time consuming, requiringbusinesses to understand what problems they can handle and to integratewith existing systems in order to surface the relevant data and takeaction. Further, businesses need to build the same intent collection andsystem integration multiple times: in the self-service bots they exposeto their customers, and in the tools (CRM) that they provide to theiragents.

The present disclosure describes a contact center system that can beimplemented in, or for use with, a computing resource architecture(i.e., “computing environment”) of a computing resource service providerto collect and aggregate activity of all of the users of the contactcenter system, analyze the aggregated activity to identify behaviorpatterns of various users, identify, using the behavior patterns, tasksand/or interactions that are consistently repeated, and create anddeploy automated routines for performing or facilitating the user'sperformance of the identified tasks/interactions.

The contact center system may aggregate the activity data described inthe log information in various ways, in order to produce one or moreactivity data sets that can be analyzed for usage patterns across all ora subset of the users, all or a subset of activity types, certain datesand/or durations of time, and combinations thereof. In some embodiments,the system may aggregate the activity by user, or by user group, over arolling time window (e.g., 24 hours) that incorporates data of multipleconsecutive logging periods (e.g., 24 one-hour periods). In someembodiments, the system may aggregate together all activity on a firstcontact center with all activity on some or all of the other contactcenters associated with other users. In some embodiments, the system mayaggregate other user data or system data into the activity data.

The contact center system can use the aggregated activity data and,optionally, other user information and/or system information to identifybehavior patterns of service agents and customers, the behavior patternsbeing defined by metrics determined from the activity.

The contact center system may create and maintain a data storecontaining predictive data describing anticipated activity of varioususers based on the identified behavior patterns. The predictive data mayinclude pattern data describing the identified behavior patterns. Forexample, the system may identify, for a first user, a plurality of usersthat each have a relatively high frequency of shared interactions withthe first user; the system may store, as predictive data or patterndata, information identifying the plurality of users as members of apersonal network of the first user. Additionally or alternatively, thesystem may apply one or more machine learning and/or other data modelingtechniques to the pattern data and/or the aggregated activity data toproduce the predictive data. For example, the system may perform amarket basket analysis of the activity-based metrics in the pattern datato identify combinations of actions that are highly likely to beperformed by a user close together in time; the system may generate, aspredictive data, a data model including instructions to the system orone of its subsystems to take one or more actions in response to theuser performing one or more of the actions in the identifiedcombinations. When new aggregated activity data or pattern data isavailable, the system may re-apply the data modeling technique(s) tointegrate the new data into the predictive data and update thecorresponding data model.

Finally, the system may use the predictive data to identify andconfigure one or more predictive actions designed to reduce the amountof collaborative activity that a particular user must manually perform,for example to further a contact workflow. In some embodiments, apredictive action may be automatically performed by the system,recommended by the system to the user (i.e., in a notification sent to aconsole, user interface, or remote device), or both (i.e., recommendedin the notification, and then automatically performed when therecommendation is accepted). In some embodiments, the type andparameters of a predictive action may be determined from loginformation, aggregated activity data of the user, or behavior patterndata. In the above market basket data model example, the predictiveactions may include monitoring for the user's performance of a firstaction in the combination, and then either automatically performing theother actions in the combination, or waiting a predetermined time forthe user to perform the action and, if the actions are not performed,performing the actions or notifying the user that the actions aretypically performed. Additionally or alternatively, the system may usethe predictive data to identify predicted activity that is expected tobe performed by one or more other users at or near a particular time orin response to another action.

The system may produce feedback, automatically and/or based on userinput, that indicates whether predictive actions were accurate. Feedbackvalidating the selection of the predictive actions may be generated inresponse to the system performing an automated action, as well as inresponse to a user accepting the system's recommendation to perform apredictive action. In contrast, if an automated action fails or isaborted or canceled, or if the user does not perform or schedule thepredictive action, negative feedback may be generated. The feedback maybe incorporated into the predictive data using appropriate data modelingtechnique(s). Feedback and/or results of predictive analysis may be usedto provide insights on subsequent projects. For example, at thebeginning of the contact workflow, the system may use the data model,pattern data, or other previously generated predictive data to identifyusers that are required to collaborate on the workflow, users thatshould not be included in the project, an expected amount of timerequired to complete the project, an expected amount of time aparticular user will spend on the project, and the like; the system maytrack the progress of the contact workflow against the predictions andprovide alerts and other updates to a project manager or administrativeuser. The system may make the predictive data available to the users,such as by providing an API to the predictive data store and/or to asubsystem that has access to the predictive data, or by streaming (e.g.,through a notification service to which users subscribe) to a particularuser some or all of the predictive data relevant to that user.

FIG. 1 depicts an example of a system 100 for providing a contact centersystem 114 that, in accordance with some embodiments of the disclosedsubject matter, implements a virtualized contact center 103 throughwhich existing and/or potential customers 108 of a business connect tocustomer service agents of the business, and customer service agentsaccess electronic data to help customers 108 resolve customer serviceissues. While the detailed examples provided are generally associatedwith customer-initiated service platforms, as used herein, a contactcenter 103 may be any implementation of a customer engagement platform,including without limitation: an inbound call center, where customerscall a service phone number and reach agents 104, 110 who can service acustomer request; an outbound call center, where agents 104, 110 callphone numbers of known and/or potential customers 108 (e.g., salescalls, service checkins, customer satisfaction surveying); a combinationinbound/outbound contact platform; an online chat platform, with aninterface presented to the customer in a software application or on awebsite; or, an email contact platform.

The contact center system 114 may collect and evaluate data describingactivity of one, some, or all users and/or usage of resources of thecontact center system 114 to identify patterns in the activity/usage,analyzes the patterns to determine predictable future interactionsbetween users and customers and actions upon data generated, stored, oraccessible by the system 114, associates the predicted interactions withworkflow states to produce a contact workflow, and generates andconfigures automated service agents that execute the workflow to servicea customer 108 contact without human intervention and/or to reduce theamount and/or improve the accuracy of actions a human service agentwould otherwise perform manually to execute the contact workflow. Thecontact center system 114 may be a service, or a system that enablescontact center services, of a computing resource service provider; thecontact center system 114 executes in a computing environment 101 of thecomputing resource service provider, and some or all of the users of thecontact center system 114 may be users of the computing resource serviceprovider. The contact center system 114 may connect to and communicatewith other systems and services of the computing environment 101, asdescribed further below. In some embodiments, system 100 can include orcommunicate with computing devices 190 associated with users, such as abusiness entity, with a user account at the computing resource serviceprovider that is associated with a contact center 103 generated withincomputing resources of the contact center system 114. In someembodiments, system 100 can include or communicate with computingdevices 196 associated with “agent users,” such as employees of thebusiness entity, that use a personal or business computing device 196 toaccess and use the contact center system 114 to perform their roles ashuman service agents 110 servicing contacts from customers 108 to thecontact center 103.

As discussed briefly above, contact centers 103 may allow for customersto contact businesses and organizations, generally via telephone calls,but other methods may be used for customers to contact the contactcenter 103. For example, the contact center 103 may be configured forcontact by customers via an Internet Protocol (IP) address or anapplication programming interface (API). A unique application (app)based identifier may be provided to allow for app based access to thecontact center 103, rather than by telephone number. Thus, an ingresspoint for entry into the contact center 103 may be defined in a numberof ways, for example through phone calls or by applications, and thedescribed examples herein are not meant to be limiting. For example,contacts can be inbound or outbound agent-customer connections, andcalls should not be limited to phone calls.

In some embodiments, calls come into the contact center from customers108 and, if an appropriate agent 110 is not available to handle thecall, the call may be routed to a call queue 112. One or more agents 110may be associated with specific call queues 112 and thus, calls may berouted from the call queues 112 to an appropriate agent 110 based upon arouting profile 113 defined at the contact center 103. Interactionsbetween the customer 108 and an agent 110 may be recorded, as well asother data related to incoming calls, and therefore data storage isgenerally required for the contact center 103 and may be provided by adata storage service. In various configurations, data and other metricsrelated to customer contacts and service agent performance may be storedfor a variety of purposes, including billing purposes, performanceevaluations, and automatic generation of automated service agents andcontact workflows as described herein.

Users, including “administrative” users that control operations of anassociated contact center 103 and agent users that staff the contactcenter 103, as well as other services of the provider's computingenvironment 101, may exchange many different types of data with thesystem 114 in order to configure and deploy the contact center 103 andservice customer issues. “Activity data” describing the users'“activity” may include data describing and/or resulting frominteractions the users have with the system 114. Some interactions andtheir associated activity data may be relevant to the establishmentand/or execution, by one or more users, of a contact workflow within thesystem 114. Non-limiting examples of such interactions and their datainclude: creating and changing the contact center 103 and settingsthereof (i.e., by the administrative user); manually creating a contactworkflow (e.g., using an interface to a workflow service 132 asdescribed below); manually creating an automated service agent toexecute a contact workflow and integrating the automated service agentinto the contact center 103; logging into the system 114, by a humanservice agent, and joining the currently active service agents in thecontact center 103; servicing a customer contact by claiming a queuedcontact request and using a system 114 interface to interact (i.e.,converse) with the customer 108 (e.g., by phone communication,text-based chat, video or audio conference over IP, etc.); and,accessing various data stores to obtain and/or modify data relevant to acustomer 108 contact. Activity data can also include data describingautomated usage of the system 114, such as data aggregation and/oranalysis operations executed by an analytics system 124, or operationsof an automated service agent to service a customer contact. The system114 may detect, monitor, and analyze some or all of the activity on thesystem 114, and may record raw collected data, analyzed and/oraggregated data, and other data describing the monitored activity in oneor more data stores.

In some embodiments, the system 114 may associate a contact center 103,a user account, or both, with contact center data 150 comprising one ormore such data stores that are configured to store the contact centerdata specific to the user/contact center 103. Such contact center data150 can be partitioned from the same such data associated with otherusers and/or contact centers, and can be encrypted and/or can havepermission-based secure access. Additionally or alternatively, varioustypes of contact center data, such as aggregated anonymized data ormetrics derived therefrom, may be stored in public or semi-private datastores in the system 114, and can be made accessible to all or a subsetof users/contact centers for the purpose of data analytics. For example,intents identified by an automated service agent engine 128 as describedbelow may be stored in the user-specific contact center data 150, andmay also be anonymized and stored in a global or industry-specificdatabase of intents. Any of the contact center data 150 may be storedand/or arranged as electronic files, databases, lookup tables, and/orany other suitable data structure for storing the corresponding type(s)of data.

Non-limiting examples of contact center data 150 are illustrated inFIG. 1. Data stores for contact center data 150 can store one or moreknowledge bases 120 and context data 176; alternatively, knowledge bases120 or other contact center data 150 may reference the context data 176,which may be stored in a data store associated with the automatedservice agent engine 128 and/or with a language processing service 174of the computing resource service provider, as described further below.Context data 176 includes data defined to contextualize interactionswith respect to a service agent 104/110 and/or customer 108, as well asother systems or services associated with the computing environment 101.For example, context data 176 may be defined with respect to useraccount data 122, such as a user identifier or user client device 196,or by another approach. User account data 122 encapsulate dataassociated with the administrative/corporate user as well as itsassociated user agents. User account data 122 may comprise, for example,login information such as usernames or passwords to authenticate a user.The user account data 122 may also comprise contact information such asa mailing address, email address, phone number or other contactinformation. Additionally, the user account data 122 may comprise datarepresenting payment instruments used to consummate a financialtransaction, including credit cards, debit cards, banking accounts,prepaid accounts, or other payment instruments. User account data 122may also comprise user preferences embodying settings, configurations,or other preferences used in interactions with the contact center system114 or other systems or services. User account data 122 may also includedata enabling interactions with systems external to the environment 101.For example, the corporate user may operate an external CRM 192 storingcustomer data 194 and business data 195; the system 114 may use useraccount data 122 to exchange data with the CRM 192.

A knowledge base 120 may encapsulate records of data accessible to ormodifiable by a service agent. For example, the knowledge base 120 mayinclude a searchable catalog of items sold by a business. In anotherexample the knowledge base 120 may contain records for various businesslogic rules, such as one or more customer policies (e.g., forcancellations or returns and exchanges). The knowledge base 120 may alsoinclude articles or other entries embodying information accessible bycustomers 108 through a service agent 110. The knowledge base 120 mayalso include other information.

Data stores for contact center data 150 can store intents and actions126, including data records describing various recognized intents andtheir associated actions. An intent is a detectable component of anatural language input provided by a customer 108 that represents thereason for the customer contact and implicates the customer's desire forthe service agent to perform an action or set of actions to satisfy theintent. For example, a natural language input of “I need help with myphone” may express an intent for needing assistance with a product. Arecord for an intent may store one or more detectable input elements,such as a spoken word or phrase, which identify the intent. An intentmay further have one or more attributes identified by the correspondingrecord. The values for the intent attributes may be detectable in thenatural language input, or the absence of a value for an attribute maybe detected. For example, a natural language input of “Where is theorder I placed yesterday?” identifies an intent to obtain an orderstatus and references intent attributes “order ID” (with no value given)and “order date” (with the value “yesterday” given). An intent can beexpressly defined by user input, or may be discovered by analyzingrecorded activity and metrics of the system 114 as described furtherbelow.

The record for the intent may store information describing thecorresponding action(s) that the service agent can take to satisfy theintent; the information may be the operations associated with an action,or may be a reference to another data record storing the details of theaction. An action can include natural language responses to be providedto the customer in response to receiving the intent. An action caninclude one or more computer functions to execute, such as APIs forobtaining or modifying data. An action can require certain data elementsin order to be performed. For example, the action may require values forsome or all of the intent attributes to be identified by the customer108, such as when the action calls an API and must pass attribute valuesto the API to obtain the associated data.

Data stores for contact center data 150 can store a workflow library152, recorded activity 154, and service statistics and metrics 156.Workflow library 152 may include a stored library of previously createdworkflows (e.g., IVR workflows, chat workflows, SMS workflows, etc.)that may be loaded into the interactive contact run-time environment ofa contact center service 102 executing the contact center 103. In someimplementations, a contact workflow may be made up of multipleinstruction blocks, where each instruction block may include a prompt(e.g., an audio voice recording prompt) to be provided to a caller, aswell as one or more commands to be executed based on the responseprovided by the caller to the prompt. In some implementations, theinstruction block may not include a prompt, but may include commandsand/or instructions that can be executed based on data collected duringpreviously executed instruction blocks or other environmental parameterscaptured by contact center service 102 rather than in response to aprompt. In some workflows, a command may initiate another instructionblock within the contact workflow.

In one embodiment, contact center service 102 may include a workflowservice 132 that provides interfaces for creating and editing workflowsin a graphical environment. For example, responsive to a request fromdevice 190 to load a contact workflow from a stored library of contactworkflows (e.g., workflow library 152), the workflow service 132 maythen provide a graphical representation of the contact workflow fordisplay in a GUI of device 190. In some implementations, the contactworkflow may be provided so that the instruction blocks of the workfloware presented as visual objects within the GUI. For example, eachinstruction block may be displayed as a box that includes a descriptionof the prompt (if present) for that instruction block as well as anyacceptable values for responses to that prompt. Additionally, aninstruction block that includes a command to execute a secondinstruction block may be displayed with an arrow or connector linebetween the box representing the first instruction block and the boxrepresenting the second instruction block. An example is illustrated inFIG. 6.

Recorded activity 154 may include data for previously recorded/capturedinteractions between service agents and customers, where service agentsare executing known or unknown contact workflows. For example, forinteractive voice response (IVR) workflows, recorded interactions 154may include response data for previously recorded/captured interactionsbetween callers and an IVR workflow that is accessible to a caller bythe use of a publicly available telephone number associated with theworkflow. Similarly, for chat workflows, recorded activity 154 mayinclude online chat correspondence between a customer contact and thechat workflow. The recorded activity 154 may include a versionnumber/identifier for the workflow, an identifier for each of theinstruction blocks in the workflow, an identifier for each of theprompts (if present) that were played for a caller, the responseprovided by the caller to each prompt, a listing of the order of theprompts encountered by a caller (e.g., the workflow path of a caller),or any similar information.

Service statistics and metrics 156 may include generated statisticalsummary information for various elements of the recorded activity 154.As described in further detail below, service statistics and metrics 156may store a statistical distribution of information collected by eachinstruction block within a workflow. In some implementations, servicestatistics and metrics 156 may store a statistical distribution of theresponses provided for a prompt in an IVR workflow over a specifiedperiod of time. For example, for a prompt that has three possibleacceptable response values, IVR statistics may store the percentage ofcallers that selected the first response value, the percentage ofcallers that selected the second response value, and the percentage ofcallers that selected the third response value. Service statistics andmetrics 156 may include aggregated processing metrics such as calltransfer rate, repeat contact rate, and other metrics that describe theeffectiveness and efficiency of previously executed contact workflowsand the service agents that executed them. Service statistics andmetrics 156 may also include metrics associated with contact center 103performance but not based on activity data. For example, the system 114or another service may administer a customer satisfaction surveyprogram, and raw or analyzed aggregate customer satisfaction scores maybe stored in statistics and metrics 156. The information stored inservice statistics and metrics 156 may be displayed in user interfacesto graphically illustrate the historical call traffic over time for aparticular IVR workflow; such information may further be used inautomated processes for discovering workflow states and the componentsthereof, and for generating, modeling, and improving programs andcontrol data that implement automated service agents, as describedherein.

In some embodiments, the plurality of parameters of each interaction mayinclude a timestamp of the interaction, and the metrics may include atime-based metric that is based on the timestamp. To perform thepredictive analysis, the system may calculate, as the measured value ofthe time-based metric, a time of day and/or a window of time in whichthe first interaction is likely to be performed; the system may schedulethe automated interaction to be executed at the identified time of dayor within the window. In some embodiments, the plurality of parametersof each interaction may include an interaction type, and the metrics mayinclude an activity-based metric that is based on the interaction type.For example, the metric may measure the frequency of a given useragent's servicing of some or all of the different types of interactionsthat can be performed on the system. To perform the predictive analysis,the system may determine the interaction type of each of theinteractions of interest and calculate, as the measured value of theactivity-based metric, the frequency for each of the types. To determinethat the first interaction can be automated, the system may determinethat the frequency of a first interaction type is indicative of thebehavior pattern. For example, if in a high percentage of contacts of afirst type, the service agent performs a first action immediately afterreceiving the intent, the system may determine that an automated serviceagent for that intent can automatically perform the first action wheninvoked.

The contact center system 114 may include a contact center service 102and/or a system implementing a contact center service, and an automatedservice agent engine 128 in electronic communication with each other andcooperating to perform the automated service agent generation anddeployment functions of the present invention. The contact center system114 may make necessary computing resources available for the contactcenter service 102 to launch a contact center 103 and process and recordthe activity of the users. In addition or alternatively to storing therecorded activity 154, the contact center service 102 may generateactivity data, such as event messages containing information aboutinteractions, that is immediately processed by a data analytics system124 when an interaction is requested, initiated, denied, interrupted,completed, etc. The event messages may include the parameters of theinteraction (i.e., those necessary to create an interaction record), asdescribed above. The data analytics system 124 may receive the eventmessages and produce records from them; such records may compriserecorded activity 154, statistics and metrics 156, etc. The dataanalytics system 124 may collect and compile various combinations ofsuch activity data pertaining to one or more users, one or more usergroups, one or more customers, one or more types of business, one ormore types of contact, or any combination thereof, across any durationor period of time of interest. For example, the data analytics system124 may obtain user agent activity and produce activity logs for asingle user agent, or a subgroup of user agents, or all of the useragents, for each logging period over the course of one month (in someembodiments allowing logs older than one month to be automaticallydeleted).

The data analytics system 124 may use any suitable data aggregationmethod to compile various data sets of interest. In some embodiments,the data sets may be compiled by summation of the occurrences of valuesfor one or more focus parameters. For example the data analytics system124 may summarize a first user agent's interactions with customersduring the period of interest, and using the length of the period ofinterest may produce an interaction frequency of each customer. In someembodiments, the activity data may be aggregated in an unconstrainedmanner, such that the data analytics system 124 produces frequencies ofall parameters in the data set. In other embodiments, the data analyticssystem 124 may be configured to aggregate the activity data without aparticular algorithm, or using an algorithm that does not specify thepatterns to be detected.

The data analytics system 124 may produce one or more aggregated datasets comprising the compiled data. In some embodiments, a singleaggregated data set is produced, comprising all of the monitoredactivity data occurring during the time period of interest. Additionallyor alternatively, context-specific aggregated data sets associated witha particular user or group of users, or with a particular customer orissue/problem, or with a particular time period, may be created. Thedata analytics system 124 may store the aggregated data sets in suitablestorage locations for the corresponding types of contact center data150. In some embodiments, the data analytics system 124 may sendaggregated data sets to the automated service agent engine 128; in otherembodiments, the automated service agent engine 128 may request the datafrom the data analytics system 124 or obtain the data from the contactcenter data 150 and/or the user data store 122 or another data store.

The automated service agent engine 128 may include a machine learningengine and/or may be configured to apply one or more machine learning orother data modeling algorithms to aggregated data sets, real-timeactivity data, company data such as business logic rules (e.g.,policies, contact center performance goals) and customer account info,and other user information and/or system information to identifypatterns in the servicing of contacts. In some embodiments, theautomated service agent engine 128 may be trained, using supervised orunsupervised learning, to identify the patterns according to features ormetrics determined from the activity. For example, the automated serviceagent engine 128 may use a feature vector in which elements correspondto parameters associated with particular types of interactions; valuesin the feature vector may correspond to a frequency of occurrence of thefeature, or may themselves be arrays of values for the feature, such asan array of user identifiers. In another example, the automated serviceagent engine 128 may use a plurality of feature vectors each associatedwith a parameter associated with a target type of interaction, and theelements of the feature vectors may be frequencies of occurrence ofparticular values of the parameter within the aggregated data set.

In some embodiments, the automated service agent engine 128 may beconfigured to identify one or more specific patterns in recordedactivity 154. In particular, the patterns may pertain to a set ofinteractions with the system 114 that occur while a service agent 110 isassisting a customer 108 through the contact center 103. Patterns may bedetected from the execution of contact workflows that share somerepetitive properties; or, patterns of interactions may be detected in aset of recorded contacts that were not serviced according to a knowncontact workflow. For example, the automated service agent engine 128may discover an intent that is not stored in the intents and actions126, or that does not have a workflow associated with it, by detecting aphrase that is contained in the natural language input recorded from acustomer 108 immediately following a prompt (e.g., “how may I helpyou?”) presented by the service agent 110, in a threshold number (orrate) of recorded contacts. The automated service agent engine 128 maybe configured to search for deeper differentiation based on patternswithin patterns. For example, once a previously unknown intent isdiscovered, the automated service agent engine 128 may identify theactions the service agent performs in response to detecting the intent,and may further determine for example, how intent attribute valuesaffect which action, from a plurality of possible actions that couldfollow the intent, is selected for performance, and/or which intentattributes must have defined (e.g., customer-supplied) values in orderto perform an action.

The automated service agent engine 128 may produce (e.g., as output ofthe machine learning engine or the corresponding data modelingalgorithms) predictive data such as intent records and/or action recordsthat may be stored as intents and actions 126. Additionally oralternatively, the predictive data may include one or more data modelsrepresenting aspects of the analyzed aggregate activity with respect toa model contact workflow or a plurality of model contact workflowscreated for different classes of intent, different types of customer,different types of service agent, etc. A data model may includeidentification of workflow states comprising tasks and/or interactionsthat are likely to be performed by the service agent and/or likelyresponses from the customer, when other conditions are present in thecontact workflow. For example, the automated service agent engine 128may perform a market basket analysis of activity-based metrics in thepattern data to identify combinations or sequences of actions that arehighly likely to be performed by a service agent close together in time;the automated service agent engine 128 may generate, as predictive data,a data model including instructions to the system or one of itssubsystems to take one or more actions in response to the userperforming one or more of the actions in the identified combinations.When new aggregated activity data or pattern data is available, thesystem may re-apply the data modeling technique(s) to integrate the newdata into the predictive data and update the corresponding data model.In some embodiments, the automated service agent engine 128 maydetermine various parameters for classifiers, feature vectors, and otherdata elements for configuring machine learning algorithms to operate onthe aggregated activity data. In some embodiments, the computingresource service provider may provide in the environment 101 one or moremachine learning services 166 that the automated service agent engine128 communicates with. The automated service agent engine 128 may sendthe aggregated activity data and the configuration parameters to themachine learning service 166, receiving back the data model, patterndata, and other predictive data.

The automated service agent engine 128 may use corresponding datamodel(s) to automatically generate one or more candidate contactworkflows based on the same workflow structure used in contact workflowsstored in the workflow library 152. In some embodiments, a candidatecontact workflow may be generated from an existing contact workflow,such as a workflow template or a workflow stored in the library 152. Acandidate contact workflow may also be entirely newly generated. Theautomated service agent engine 128 may generate candidate contactworkflows for an entire contact, or for only a subset of a contact, suchas for an intent. The automated service agent engine 128 may incorporateother user data into the data model to refine candidate workflows andtheir composite workflow states. For example, statistics and metrics 156may include information describing rates at which the contact isserviced to the customer's satisfaction when a candidate contactworkflow or a similar workflow is used, and the automated service agentengine 128 may use these rates to determine whether to modify orrearrange workflow states. The automated service agent engine 128 maygenerate several candidate contact workflows for the same intent, eachbeing slightly different from the others in order to test thecandidate's effectiveness and efficiency. Through testing andrefinement, an optimal contact workflow may be identified. The optimaland candidate workflows may be stored in the workflow library 152.

The automated service agent engine 128 may further use the data modelsand/or generated contact workflows to generate one or more automatedservice agents 104, also known as “chatbots,” and to configure theautomated service agents 104 to execute one or more contact workflows,or part of a contact workflow. In some embodiments, the automatedservice agent engine 128 may identify the APIs needed to perform eachpossible action for an intent, and may enable an automated service agent104 to execute the APIs. For example, the automated service agent 104may comprise a data structure stored in a data store of automatedservice agents 130, and the data structure may store programinstructions for executing the APIs, as described further below. Thecontact center service 102 may integrate an automated service agent 104into the contact center 103, such as by executing integration code thatallocates virtual computing resources for an instance of the automatedservice agent 104 and launches the automated service agent 104 into theallocated resources. The automated service agent 104 may then operateusing suitable interfaces for receiving a request for customer service,initiating the contact with the corresponding customer, communicatingwith the customer via segments of scripted speech associated with theworkflow states, processing natural language inputs in real-time todetermine customer responses, and calling the associated API(s) toperform indicated actions.

In some embodiments, an automated service agent 104 may be associatedwith a discovered intent, and may be invoked (e.g., an instance of theagent 104 may be launched into the call center 103) when thecorresponding intent is detected in the customer input. The automatedservice agent 104 may execute the contact workflow for the correspondingintent in real-time interaction with the customer 108. Alternatively,the automated service agent engine 128 or the contact center service 102may retrieve the corresponding data structures for the intent'sassociated contact workflow (e.g., from workflow library 152) andautomated service agent 104 (e.g., from agent store 130) and may use theautomated service agent 104 to execute some or all of the contactworkflow without human intervention. This may supplement, streamline,replace, or otherwise improve the efficiency of various interactions ofthe user that, as indicated by the identified behavior patterns, aresuitably predictable with respect to a given contact type, customer,time of day/year, etc. At the end of the workflow execution, the contactmay not be fully serviced, and may be transitioned to a human agent. Theengine 128 may configure a user interface on the human agent's device196 to display information about the workflow execution and present aset of available options that the human can perform next.

The contact center service 102 may produce feedback, automaticallyand/or based on user input, that indicates whether the automated serviceagent 104 and/or the generated contact workflow that the agent 104executes are fulfilling customer expectations. Feedback validating theworkflow states may be generated in response to the performance of anautomated action, as well as in response to favorable responsive inputfrom the customer after the action is performed. In contrast, if anautomated action fails or is aborted or canceled, or if the customerinvokes a transition to a human agent or exhibits certain sentiment inthe natural language input, negative feedback may be generated. Thefeedback may be stored as contact center data 150, or may be sentdirectly to the automated service agent engine 128, which mayincorporate the feedback into the data model(s) using the machinelearning engine/data modeling algorithms. For example, the machinelearning engine may be retrained using the feedback to improve thethresholds or other aspects of the data model. The system 114 may makeautomated service agents and generated contact workflows available tothe users, such as by providing an API to the automated service agentsystem 128.

The present systems and methods for generating automated service agentsto execute detected workflows in a contact center can be used incomputer systems 105 upon which the computing resource service providerimplements the virtualized computing environment 101. The physical(i.e., hardware) computing systems 105 may be co-located in one or moredata centers or may be remote from each other, and may be interconnectedvia various networking devices and one or more physical networks. Thephysical computing systems 105 and other devices are used in thisexample by a network service to enable administrative users to arrangeone or more contact centers 103 and provide contact center services tocollaborative users. Services and resources of the computing environment101 can be implemented on virtual networks that use the physicalnetwork(s) as a substrate network upon which the virtual networks areoverlaid. The computing environment 101 may include the contact centersystem 114 and various virtual computing resources that support thesystem 114, such as logical data storage devices virtualizing physicalstorage volumes and memory modules, virtual network interfaces, loadbalancers, services (e.g., notification service 168, externalcommunication manager 138), and the like, all interconnected withvirtual private networks.

In some embodiments, computing devices 190, 196 of the users of thecontact center system 114 can access computing resources and services ofthe computing environment 101, including the contact center system 114,over an external (i.e., outside of the computing environment 101)communication network 106. In some embodiments, communication network106 can be any suitable wired network, wireless network, any othersuitable network, or any suitable combination thereof. Additionally,communication network 106 can be any suitable personal area network,local area network, wide area network, over-the-air broadcast network(e.g., for radio or television), cable network, satellite network,cellular telephone network, any other suitable type of network, or anysuitable combination thereof. For example, communication network 106 canbe a publicly accessible network of linked networks, in some casesoperated by various distinct parties, such as the Internet. In someembodiments, communication network 106 can be a private or semi-privatenetwork, such as a corporate or university intranet. Additionally, insome embodiments, communication network 106 can include one or morewireless networks, such as a Global System for Mobile Communications(“GSM”) network, a Code Division Multiple Access (“CDMA”) network, aLong Term Evolution (“LTE”) network, any other suitable wirelessnetwork, or any suitable combination of wireless networks. Communicationnetwork 106 can use any suitable protocols and/or components forcommunicating via the Internet and/or any of the other aforementionedtypes of networks. For example, communication network 106 can use one ormore protocols or combinations of protocols, such as Hypertext TransferProtocol (“HTTP”), HTTPS, Message Queue Telemetry Transport (“MQTT”),Constrained Application Protocol (“CoAP”), etc.

The computing environment 101 may include an external communicationmanager 138 that manages external communications that enter and leaveenvironment 101. In some embodiments, the external communication manager138 may translate network activity between the address spaces of thecomputing environment's 101 virtual networks and the address space ofthe external communication network 106. Alternatively, the externalcommunication manager 138 may be a simple router configured to pass datatransmissions from source to destination. In some embodiments, theexternal communication manager 138 may provide various APIs, including aconsole and/or user interfaces for the collaborative users andadministrative users, to disparate computing devices 110, 130. Theexternal communication manager 138 may obtain the APIs from the frontend118.

In some embodiments, the contact center system 114 may include afrontend 118 to receive and process messages from the computing devices190, 196 of authorized users of the system 114. For example, in someembodiments, frontend 118 can serve as a “front door” to the subsystemsof the contact center system 114. Frontend 118 can process the messagesreceived from various computing devices and/or generated, for example,in response to events (e.g., when a user submits user input for callingan API to perform an action), and can determine whether the messages areproperly authorized. In some embodiments, frontend 118 can include oneor more web servers configured to expose one or more application programinterfaces (“APIs”) that can receive messages from one or more computingdevices 190, 196 as API calls. In some embodiments, frontend 118 canextract requests from the API call and write them to a data storeassociated with the contact center system 114. In one example, a useragent using computing device 196 may call an API of a user customerrelationship management (CRM) system 192 to access customer data 194(e.g., a purchase history of a customer 108) and/or business data 195(e.g., a product catalog, inventory, or purchase order database). Themessages and user input received by the frontend 118 from administrativeusers may be processed by the frontend 118 or another service configuredto perform administrative functions; changes to user accounts andsettings, and associations of contact centers to their respective useraccounts, may be stored in the user data store 122.

FIG. 2 illustrates an example service architecture of a contact centersystem 200 as described above, including the functional entities of thefront-end system 210, the service automation system 220, the contactcenter data analytics system 250, and the language processing system260, in accordance with at least one embodiment. The front-end system210 can include a user interface service 224, a web server 232, anapplication server 234, a management console 236, a control planeservice 238, and a synchronization service 230. The user interfaceservice 224 may be a collection of computing devices and other resourcescollectively configured to generate any of the user interfaces and theircomposite screens, including static and dynamic graphical elements andinteractive elements that enable a user to enter user input, that aredisplayed on the display screens of user computing devices. Non-limitingexamples of user interface elements include: interface and contactcenter navigation elements; visual representations of contact centeractivity and workflow management; control screens for performing contactcenter interactions such as servicing a customer contact, managingautomated tasks and interactions set by the system 220, and managingfile storage arrangements such as directory structures; and, controlscreens for performing other interactions, such as managing site and/oruser account settings, and accessing contact center data. The userinterface service 224 may send data representing the user interfaces tothe user computing devices for display thereon, through any of thesuitable servers 232, 234.

The web server 232 may enable the execution of a web site, a single-pageweb application or a single-page interface that permits a user to accessthe contact center system 200. The web server 232 may further serve as auser device client. The web server 232 may also enable an administrativeuser to set permissions or share modes that specify the privileges givento a user agent in accessing the contact center system. In addition, theweb server may enable users or devices to submit authenticationcredentials. Although one web server 232 is described with reference toFIG. 2 it may be contemplated that multiple web servers of any type maybe used, whereby a portion of the web servers may be redundant.

The application server 234 may be a collection of computing devices andother resources collectively configured to serve as a user-exposedservice that receives requests from the user and services the requests.A user request may be made using a website or a management consoleaccessible to the user or a client that is executed on a user's deviceand may make service requests on behalf of the user. The request may bean API function call and the application server 234 may process therequest and manage its execution. The application server 234 may processweb-based API function calls as well as calls to non-HTTP APIs, such asmobile software application APIs and other software APIs. For example,some user agents may connect to the contact center system 200 using aplugin or similar software application that cooperates with one or morelocal applications installed on the user computing device, such as aword processing program, an email client, a personal scheduling program,and the like. The application server 234 may cause the synchronousexecution of actions associated with a received request or alternativelymay cause one or more actions that require more complex processing to bequeued and/or sent to another system (e.g., service automation system220) for asynchronous execution. The application server 234 may also beresponsible for receiving user credentials and request authentication ofthe user from an authentication service.

The management console 236 may be a collection of computing devices andother resources collectively configured to permit organizations,administrators and users to register for utilizing the serviceautomation system 220. The management console 236 may be used inaddition or as an alternative to a website or an application running ona user device and may permit users and administrators to make servicerequests using appropriately configured API function calls. For example,the management console 236 may be used for allowing dashboard access,audit log access, permission setting (for example, for administratorsand users), storage limit setting (for example, for organizations andusers) and security setting (for example, password and encryption). Thecontrol plane service 238 of the frontend system 210 may be a collectionof computing devices and other resources collectively configured toserve as an interface to services and other resources of the computingresource service provider outside of the contact center system 200(e.g., notification, message relay, machine learning, datamonitoring/logging, and data storage services). The control planeservice 238 may send messages to, and receive messages from, suchservices, may store and retrieve data from storage locations, etc.; suchtransmissions may be performed using secure channels, and/or may includeauthentication procedures to verify such transmissions. For example, thecontrol plane service 238 may coordinate with the control planeservice(s) of other computing resource service provider servicearchitecture to provide communication channels and protocols between thesubsystems of the contact center system 200 and the language processingsystem 260, machine learning engine 266, transcription service 280, andconversational interface service 290.

The synchronization service 230 of the front-end system 210 may be acollection of computing devices and other resources collectivelyconfigured to provide information to users nearly contemporaneously withthe generation of the information. The synchronization service 230 maycommunicate with one or more services of the service automation system220 in order to provide information to one or more users. Thesynchronization service 230 may implement a WebSocket or other protocolto enable users of the service automation system 220 to receive updatesto contact center data. The synchronization service 230 may provide abi-directional communications channel between single- or multi-page webapplication or client application operated by the user and the webserver 232 or one or more other services of the service automationsystem 220. For example, multiple user agents may be available within acontact center, possibly using different communication channels (e.g.,desktop/web, application, phone) to service customer contacts; thesynchronization service 230 may receive updates to the servicetasks/workflow corresponding to users' interaction through theparticular user's client application. The synchronization service 230may the transmit information corresponding to the users' interaction toone or more of the multiple users logged into the contact centersimultaneously, and/or to other users authorized to access the contactcenter, such that the users receive real-time updates to intentworkflows, etc.

In some embodiments, the service automation system 220 can include someor all of a user interface service 222, an automated service agentengine 226, an asynchronous engine 228, an intent constructor 240, aworkflow automation service 244, and a data model service 246. In otherembodiments, various other systems 210, 250, 260 of the contact centersystem may implement any of the listed services. The user interfaceservice 222 may be a collection of computing devices and other resourcescollectively configured to generate any of the user interfaces and theircomposite screens, including static and dynamic graphical elements andinteractive elements that enable a user to enter user input, that aredisplayed on the display screens of user computing devices. Non-limitingexamples of user interface elements include those described above, aswell as interfaces for confirming or changing details of intentsconstructed by the intent constructor 240, interfaces for manuallycreating or changing workflows or modifying settings that controlworkflow generation within a workflow automation service 244, andinterfaces for confirming, modifying, deploying, and otherwise managingautomated serve agents produced by the automated service agent engine226, etc. The user interface service 222 may send data representing theuser interfaces to the frontend system 210 for delivery to usercomputing devices (i.e., by the appropriate server(s) 232, 234).

The automated service agent engine 226 may be a collection of computingdevices and other resources collectively configured to obtain andanalyze, and/or coordinate other systems and services to analyze,activity data and other data as described above to discover customerintents and service agent actions, generate contact workflows that usethe actions to satisfy the intents when presented in a customer contact,and generate automated service agents that can be deployed into acontact center to autonomously detect an intent in a customer input andexecute the contact workflow. In one example, the automated serviceagent engine 226 may obtain an aggregate data set from the dataanalytics system 250, obtain transcripts of the recorded contacts in thedata set from the transcription service 280, obtain data describingcustomer sentiment and other context of a contact from the languageprocessing system 260, invoke the intent constructor 240 to evaluate(e.g., using a data model service 246 and/or machine learning engine266) the transcribed, contextualized activity data and discover one ormore intents, along with the intent attributes and one or more actionsthat the service agent can perform in response to the customerexpressing the intent, invoke the workflow automation service 244 totranslate the intent records into a sequence of workflow statesinterconnected to form a contact workflow for the intent, and invoke aconversational interface service 290 to generate an automated serviceagent and an agent configuration for autonomously executing the contactworkflow and interacting, in a humanlike manner, with a customerexpressing the intent.

The asynchronous engine 228 may be a collection of computing devices andother resources collectively configured to manage the execution ofasynchronous workflows. The asynchronous engine 228 may include or beconnected to a queue that stores asynchronous events for execution; theasynchronous events may each correspond to performance of an action, andone or more events may need to execute for each interaction. Theasynchronous engine 228 may coordinate the execution of asynchronousworkflows with various services of the system 220 and may be responsiblefor scheduling execution of actions associated with the workflow. Theasynchronous engine 228 may process events for submitted interactions insequence at times, but also in accordance with event interdependenciesand with resource availability. In some embodiments, the asynchronousengine 228 may cooperate with the activity data service 242 to generateactivity data representing some or all of the interactions on the system220. For example, the asynchronous engine 226 may send, automatically orin response to a request from the activity data service 242, informationabout each completed event, and/or about a completed interactioncomprising a plurality of events, to the activity data service 242 forstorage and/or other processing.

The intent constructor 240 may be a collection of computing devices andother resources collectively configured to analyze serviceagent-customer interactions and other data and identify intents,associated intent attributes, and associated possible actions and theircorresponding APIs. The intent constructor 240 may produce one or moreintent records describing the intents discovered in the recorded datafor a given contact. The intent records may be data structurescontaining the identified data in a format that other services, such asthe autonomous service agent engine 226 and the workflow automationservice 244, are able to process in order to produce workflows andautomated service agents. In some embodiments, an intent record mayinclude fields that: identify the intent, such as with a unique intentidentifier (e.g., ID number); describe the intent in natural language ahuman agent or administrator would understand (e.g., an intent to issuea refund may include a descriptor field with the value “Issue Refund”);identify one or more utterances associated with the intent, detectablein the customer's natural language input, and representing phrases thecustomer could (or did) say to express the intent—the data in an“utterances” field could include multiple records each comprising anaudio recording of an associated utterance or a transcription of theutterance; identify one or more classes or categories of the intent;identify one or more attributes of the intent, such as with asub-structure for each attribute that includes an attribute identifier,a flag indicating whether a value for the attribute is required, a dataformat of the attribute input value, one or more fields storingutterances associated with the attribute, etc.; and, identify one ormore actions to be performed in association with the intent, such aswith a sub-structure for each action that includes an action identifier,one or more APIs to call to perform the action, credentials (if any)needed to call the one or more APIs, etc. The intent constructor 240 mayaccess other systems and services, such as a transcription service 280,language processing system 260, and machine learning engine 266, toanalyze recorded activity and other data. In some embodiments,information about an intent may be gathered, analyzed, and stored bysuch other systems and services, and an intent record created by theintent constructor 240 may include references to this informationinstead of the information itself. For example, a language processingsystem 260 or a conversational interface service 290 may identifyutterances and create and store utterance records, and the intentconstructor 240 may create the intent record to include references tothe utterance records associated with the identified intent. Exampleimplementations of the intent constructor 240 are described in detailbelow with respect to FIG. 4.

The workflow automation service 244 may be a collection of computingdevices and other resources collectively configured to analyze intentrecords generated by the intent constructor 240 and predictive datagenerated by the automated service agent engine 226 to create workflowstates and interconnect them to produce contact workflows. In someembodiments, the workflow automation service 244 associates predictiveactions with workflow states based on behavior patterns withininteractions; the behavior patterns may be detectable from the activitydata generated by the activity data service 242, and may pertain tointeractions and other functions that the relevant user(s) has/have beenperforming “manually”—that is, without the aid of workflow automation.There may be multiple types of predictive actions. In some embodiments,a predictive action may be an automated interaction, an alert notifyingthe user of expected behavior, a notification containing one or morerecommendations to the user to perform certain actions (e.g., changesecurity settings for an API), a monitoring action that monitors futureactivity for expected behavior, or a combination thereof. For example, apredictive action may be a notification recommending that the user allowthe system to deploy a generated automated service agent to handlecontacts associated with a particular intent, including a selectableelement to accept the recommendation; the workflow automation system 244may deploy the automated service agent in response to the user'sacceptance of the recommendation.

The intent constructor 240 and/or workflow automation system 244 mayidentify predictive actions using one or more predetermined oruser-provided thresholds associated with the values of one or moremetrics that define the behavior patterns. In some embodiments, theremay be a known set of metrics determined by the data modelingalgorithm(s) that the data model service 246 is configured to apply toaggregated activity data. Some predictive actions may be based on asingle metric. For example, the predictive data may include a metricidentifying the relative frequency of each API call or sequence of APIcalls that is made by the service agent immediately following thecustomer's expression of the intent. A predictive action operating onjust this metric may cause the intent constructor 240 to identify eachAPI called at a frequency that is above a certain threshold, which maybe preset or based on a median frequency or another measure of relativefrequency, as a possible action validly taken when the customerexpresses the intent; this predictive action may further cause theworkflow automation system 244 to generate a workflow state for each ofthe identified APIs. Other predictive actions may be based on multiplemetrics, evaluated serially or in parallel.

The data model service 246 may be a collection of computing devices andother resources collectively configured to generate or obtain datamodels representing measured characteristics identifiable across sets ofsimilar customer contacts. The data models generated by the data modelservice 246 may be used to automatically generate contact workflows andautomated service agents as described herein. For example, a data modelmay include one or more intents and a feature set associated with eachintent, wherein data elements of the feature set include intentattributes and service agent actions. Each data element may have anassociated value or a plurality or range of potential values; in someembodiments, the potential values may be derived from a training set ofrecorded previous contacts.

In some embodiments, the contact center data analytics system 250 caninclude an activity data service 242, a data aggregator 252, and astatistics and metrics service 254, and other services. The activitydata service 242 may be a collection of computing devices and otherresources collectively configured to generate interaction recordsdescribing some or all of the activity performed by users and automatedservice agents on the contact center system 200.

The data aggregator 252 may be a collection of computing devices andother resources collectively configured to obtain and aggregate activitydata and send the aggregated activity data to the service automationsystem 220. The data aggregator 252 can collect and compile variouscombinations of activity data pertaining to one or more user agents, oneor more automated service agents, one or more users, one or moreintent/activity types, or any combination thereof, across any durationor period of time of interest. Any data aggregation method suitable forsummarizing activity data records produced by the activity data service242 may be used, and one or more aggregated data sets may be produced.The statistics and metrics service 254 may control the manner in whichthe data aggregator 252 compiles the obtained activity data to producethe data set(s). Non-limiting examples of aggregation parameters thatmay be set include: aggregation frequency; whether a rolling window isused, and the duration of the window; data sets to produce, such as asingle aggregated data set comprising all of the recorded activity dataoccurring during the time period of interest, or context-specificaggregated data sets each containing only the activity relevant to aparticular user or group of users, or to a particular customer or set ofcustomers, or to a particular type of intent/action, or to a particulartime period; and, parameters within the activity data to include orexclude.

In some embodiments, the contact center workflow system 270 can includea user interface service 272, a workflow management service 274, and anautomated service agent integration service 276. The user interfaceservice 272 may be a collection of computing devices and other resourcescollectively configured to generate any of the user interfaces and theircomposite screens, including static and dynamic graphical elements andinteractive elements that enable a user to enter user input, that aredisplayed on the display screens of user computing devices. Non-limitingexamples of user interface elements include those described above, aswell as interfaces for manually creating or changing contact workflowsusing the workflow management service 274. The user interface service222 may send data representing the user interfaces to the frontendsystem 210 for delivery to user computing devices (i.e., by theappropriate server(s) 232, 234).

The workflow management service 274 may be a collection of computingdevices and other resources collectively configured to generate, modify,store, and deploy contact workflows as described herein. The workflowmanagement service 274 may generate the data used by the user interfaceservice 272 to provide a design environment for display on a computingdevice; the design environment enables a user of the computing device tovisually create and edit workflow states and interconnect them toproduce a contact workflow. In some embodiments, the user can addworkflow states to a contact workflow that invoke automated serviceagents to perform a portion of the workflow. The automated service agentintegration service 276 may be a collection of computing devices andother resources collectively configured to incorporate automated serviceagents into a contact center in order to execute contact workflows, asdescribed herein. In some embodiments, the automated service agentintegration service 276 may enable deployment of automated serviceagents that are manually created (e.g., using the workflow managementservice 274 and conversational interface service 290) or automaticallycreated (e.g., using the service automation system 220).

In some embodiments, the language processing system 260 can include adata parsing service 262 and speech context engine 264, and otherservices. The data parsing service 262 may be a collection of computingdevices and other resources collectively configured to parse datastructures of the aggregated activity data to obtain a set of parametersto analyze, and their respective values and/or associated interactionrecords. In some embodiments, the set of parameters may be targetparameters of a preconfigured data modeling algorithm executed by thespeech context engine 264 and/or a machine learning engine 266. In otherembodiments, the set of parameters may include only those parametersthat are relevant to the predictive actions that the intent constructor240 and/or workflow automation service 244 is configured to identify. Inother embodiments, the set of parameters may include only thoseparameters that have new information to process since the previouspredictive analysis of aggregated activity data. In other embodiments,the set of parameters may be all parameters that can be extracted fromthe aggregated activity data.

The data parsing service 262 may generate one or more data structureseach containing the information related to one or more of the set ofrelevant parameters, and each configured according to a format that thespeech context engine 264 and/or machine learning engine 266 isconfigured to process. In some embodiments, the data parsing service 262may be a language-oriented parser, such as a JSON parser that obtainsparameters and their values from structured or unstructured data.

The speech context engine 264 and/or machine learning engine 266 may betrained, using supervised or unsupervised learning, to produce metricsdescribing the behavior patterns and defined by the parsed parameters.Some metrics may pertain to user-based patterns, and the relevantparameters recorded in interaction records may include identifiers ofusers that were subjects of interactions performed by a target user, orthat performed interactions identifying the target user, or thatperformed interactions on customer contacts assigned to the target user.Some metrics may pertain to time-based patterns, and the relevantparameters recorded in interaction records may include a timestampindicating the time of day, day of the week, day of the month, and thelike; additionally, relevant parameters may comprise calculateddurations between interactions and other events, such as the timeelapsed between a request and an acceptance of the request, or betweencalls to an API that is not returning expected data. Some metrics maypertain to activity-based patterns, and the relevant parameters recordedin interaction records may include the type of interaction, and the useof optional parameters for certain activities (e.g., whether differentvalues for an optional intent attribute cause different actions to beperformed). In some embodiments, any of the metrics may further includethe parameters of interaction records that describe feedback topreviously identified predictive actions, as described above, so thatthe machine learning engine 266 may account for the feedback and furtherrefine the resulting predictive data.

In some embodiments, the machine learning engine 266 may perform anysuitable machine learning and/or other data modeling process(es) tometrics in the parsed data to produce predictive data describing thebehavior patterns in the respective activity. The machine learningengine 266 may include the learning algorithms along with theirsettings, or the engine 266 may cooperate with another machine learningservice, which may be provided by the computing resource serviceprovider as described above, or may be external to the provider'svirtual computing environment. The machine learning engine 266 may beconfigured to search for deeper differentiation based on metricsidentifying a pattern within an identified pattern. The resultingpredictive data may describe or represent one or more data models of theavailable sets of aggregate activity data. The data models may use amodel contact workflow as a reference, to which the data modelsassociate the analyzed metrics. A data model may include identificationof tasks and/or interactions that establish and/or execute the contactworkflow; some of these tasks and/or interactions may be anticipatedonce a certain point in the workflow is reached, and/or in response tothe presence of certain conditions in the system. When new aggregatedactivity data or other user information relevant to the data model(s) isavailable, the system may re-apply the data modeling technique(s) tointegrate the new data into the predictive data and update thecorresponding data model(s). Any generated predictive data may be sentto the service automation system 220 for processing into predictiveactions as described above.

The service automation system 220 and/or other subsystems of the contactcenter system 200 may interface with other services of the computingresource service provider; non-limiting examples of such servicesinclude a transcription service 280 and a conversational interfaceservice 290. The automated service engine 226 and/or the intentconstructor 240, as described above, may send recordings of naturallanguage inputs to the transcription service 280. A data parsing service282 of the transcription service 280 may analyze the natural languageinputs and any associated metadata to restructure the data; for example,the data parsing service 282 may receive an input file comprising anaudio recording, and may divide the input file into a plurality of filesegments by detecting different voices in the audio recording andseparating the input file into segments assigned to each correspondingspeaker. A speech-to-text engine 284 may apply one or more speechrecognition algorithms to the natural language input(s) and/or thecorresponding parsed data to produce a text transcription of therecorded conversation. The text transcription may be sent back to theservice automation system 220.

A conversational interface service 290 may be configured to produceinteractive “chatbots,” or automated agents that can comprehend andrespond to user input in a conversational manner. In some embodiments, auser interface 292 is provided to enable users of the computing resourceservice provider to create and configure automated agents by manuallyentering user input. The conversational interface service 290 mayinclude a workflow parsing service 294 configured to understand theformatting of contact workflows used in the contact center service 200,and further to produce automated agents that can execute the contactworkflows. Alternatively, the service automation system 220 (e.g., theautomated service agent engine 226 or the workflow automation service244) may convert contact workflow data into conversational workflow datathat the workflow parsing service 294 understands, and from which anagent generator 296 may generate automated agents. Automated agentsgenerated for the purpose of executing contact workflows may be sentback to the service automation system 220.

FIG. 3 illustrates an example method 300 performed by the contact centersystem to identify intents of customers and actions that agents take inresponse, generate workflows embodying the intents and actions, andconfigure automated service agents to execute the workflows and automateportions of the workflow that were previously executed through manualuser interactions. At 302, the system may obtain contact center datadescribing agent-customer interactions, such as recorded calls, networkactivity logs showing API calls, and other recorded activity.

At 304, the system may identify at least one intent and itscorresponding intent attributes using the contact center data. In someembodiments, at least one of the identified intents may be already knownto the system. For example, the intent may be associated with an intentrecord stored in the user's contact center data (e.g., in intents andactions 126 as described above with respect to FIG. 1) and/or stored ina systemwide data store for use by other users (e.g., all users, as in aglobal, default, or standard set of intents; or, a subset of users, suchas the subset of users that are corporate entities in the same industry)in their contact workflows. In some embodiments, at least one of theidentified intents may have been previously unknown to thesystem—entirely unknown in some cases, and at least unknown to thecontact center service as implemented for the current user.

At 306, in some embodiments the system may determine a category orclassification of the intent, based at least in part on the intentattributes and other properties of the interactions that are analyzed aspart of the contact center data. A classification scheme may includeclasses that are defined by the attributes of the contact that can bedetermined from the data describing the interactions, usingspeech-to-text transcription and natural language processing and othermachine learning techniques, as described above. In some embodiments,intents may be classified based on attributes describing a context ofthe customer making the contact; non-limiting examples of suchattributes include issue/problem type, customer profile data, recentpurchase history, etc. In some embodiments, intents may be classifiedbased on attributes describing a context of the service agent;non-limiting examples of such attributes include agent performancehistory, agent previous interactions with customer, agent training levelwith the system, and agent abilities/skill level with respect tocustomer service generally and the identified intent specifically. Thesystem may further classify the intent attributes themselves.

Classifying an intent may be optional; in embodiments where the systemdoes classify intents, the classification(s) may be used to leverageinformation about an intent, such as a newly discovered intent, for usein the contact centers of other users of the computing resource serviceprovider. For example, the activity data being analyzed may describe aset of interactions on a first user's contact center; the system may,upon identifying the intent, obtain information about properties of thefirst user's business, such as the industry of the business, and maycreate and store a classification for the intent that identifies theintent as relevant to the properties. The system may store thecorresponding intent record in a data store of public or semi-publicintent records. The intent may then be used in contact centers of otherusers operating businesses that have the same properties. For example,when a second user's business is in the same industry as the firstuser's business, the corresponding intent may be exposed to manual orautomated contact workflow and service agent creation, as a relevantintent to the second user's customers.

At 308, the system may identify the available actions associated withthe intent—i.e., the service agent action(s) performed when the customerexpresses the present intent. At 310, the system may determine theAPI(s) that the service agent calls, and the API commands/argumentsused, to perform each action. In some embodiments, at least one of theactions may be already known to the system, and thus the system isconfigured to identify the corresponding API calls in the activity data.For example, the action may be associated with an intent record storedin the user's contact center data (e.g., in intents and actions 126 asdescribed above with respect to FIG. 1) and/or stored in a systemwidedata store for use by other users (e.g., all users, as in a global,default, or standard set of intents; or, a subset of users, such as thesubset of users that are corporate entities in the same industry) intheir contact workflows. In some embodiments, at least one of theactions may have been previously unknown to the system—entirely unknownin some cases, and at least unknown to the contact center service asimplemented for the current user. API calls may be to known APIs thatare specific to the contact center system (i.e., used to executefunctions of various components of the system), or may be to APIsassociated with other services of the computing resource serviceprovider, or may be to APIs of other systems, like a user CRM.

At 312, the system may design one or more contact workflows for theintent, based on intent attributes, actions (APIs), and contextualinformation. In some embodiments, the contact workflows may be createdand stored in a workflow format that is used in the contact centersystem, i.e., for guiding human agent and manually-created automatedagent interactions. At 314, the system may configure at least oneautomated service agent to detect the identified intent(s) andcorresponding intent attributes in a customer's natural language input,to access each API and otherwise perform the available action(s), and toexecute workflow states in the generated contact workflow(s). At 316,the system may store all of the generated data structures, such as anintent record, contact workflow, and automated service agent template,and any associated data in appropriate data storage locations.

FIG. 4 illustrates an example intent constructor 400 processing activitydata representing a recorded contact between a customer 410 and an agent412, which may be a live or automated service agent, on a contact centeras described herein. The example intent constructor 400 includes aspeech sampler 402, an action monitor 404, a user data parser 406, acustomer data parser 408, and other analytics services and data such asan intent classifier 420 and contact center metrics 422. The intentconstructor 400 and/or any of its components may collect and analyzedata and/or may communicate with other services, such as a naturallanguage processing system, to analyze collected data.

The speech sampler 402 detects utterances in natural language input byeither the customer 410 or the agent 412. The speech sampler 402 mayoperate on audio data or on a transcription (i.e., text) of the recordedcontact. The intent constructor 400 may identify intents and intentattributes, and their associated information, from speech analyzed bythe speech sampler 402. The action monitor 404 detects agent 412 actionsfrom the activity data, including API calls and the arguments used inthe API call, other data access and modification operations, datareturned from data stores in response to agent 412 actions, notes andcorrespondence generated by the agent 412 or another party associatedwith the contact (e.g., the agent's supervisor), etc. The intentconstructor 400 may identify actions performed in associated with anidentified intent, and may generate action data structures in the intentrecord accordingly.

Action identification may be assisted by the user data parser 406 andthe customer data parser 408. The user data parser 406 may be configuredto detect data returned to the contact center from one or more user datastores 414 in response to agent 412 actions. For example, the agent 412may submit an API call or database query to a knowledge base storinginformation about the user's products, or to a user data store 414(e.g., in the user's CRM) containing the user's customers' orders andother account data. The user data parser 406 may identify data elements,structures, formats, etc., in the user data that the intent constructor400 may use to determine a simulation of the agent 412 actions.Similarly, the customer data parser 408 may be configured to collectdata related to the customer, such as the method of contacting thecontact center (e.g., phone call, live chat on website, click-throughfrom website, emailed service request), a history of past contacts,whether the customer requested a live agent, etc. The intent constructor400 may access contact center metrics 422 (e.g., generated and stored bycontact center subsystems as described above) to improve the accuracy ofidentifying intents, intent attributes, and actions. In someembodiments, the contact being analyzed by the intent constructor 400may be a live contact between a customer 410 and an “experimental”automated service agent 412 designed to identify intents and actions andautomated contact workflows from scratch, as described further below. Inthe example communication, reference 417 depicts a natural languageinput “Hi” from the customer 410 to the agent 412. The speech sampler402 detects an intent of “Intro” at reference 421, indicating that thecustomer 410 wishes to perform a subsequent action. The agent 412 thencommunicates a response of “Hello, how can I help you?” at reference424. The speech sampler 402 detects this response as a prompt to thecustomer to input the customer's next intent. The customer 410 inresponse to the prompt provides a natural language input of “I'd like tocancel an order” to the agent 412 at reference 427. The speech sampler402 detects an intent of “Cancel Order,” and may attempt to identify theintent in an intent database at reference 431. If there is no matchingintent, the intent constructor 400 may begin building an intent recordfor the “Cancel Order” intent.

At reference 434, the action monitor 404 detects that, in response tothe “Cancel Order” intent, the agent 412 queries the user data store 414to determine if there are any cancelable orders for the customer 410.For example, the action monitor 404 may detect an API call to theexternal CRM and may obtain the details of the API call. The action maybe a “getCancelableOrders” API call including, the customer'sidentifying information as an argument). The intent constructor 400 mayattempt to match the collected information to a known action, and maycreate an action record for the identified action and associate theaction record with the intent record. At reference 437, the actionmonitor 404 determines that the agent 412 receives an indication (i.e.,from the user CRM or another service of the computing resource serviceprovider) that there are cancelable orders associated with theidentified customer. The agent 412 then provides a response to thecustomer 410 at reference 441, soliciting an indication of which ordershould be cancelled. The speech sampler 402 may detect this as a prompt,and/or the action monitor 404 may detect this as an action associatedwith obtaining values for required intent attributes to perform theactions that satisfy the “Cancel Order” intent.

In response to this prompt, at reference 444 the customer 410communicates a natural language input of “The shoes I ordered yesterday”to the agent 412, which identifies entities “Shoes” and “Yesterday.” Thespeech sampler 402 detects this input as one or more values for intentattributes. In some embodiments, at this point the intent attributes areunknown; the intent constructor 400 may at reference 447 apply automatedlogical reasoning to determine the context of the values. For example,the intent constructor 400 may determine that an order must beidentified to be canceled, and the user data store 414 maintains a setof parameters for each order including the order number; order date,products in the order, etc.; the user data store 414 may also maintain aset of parameters for each product, including product identifier,category, manufacturer, model number, price, etc. Based on the availableparameters, the intent constructor 400 may determine that the values areassociated with certain intent attributes. For example, the intentconstructor 400 may access a knowledge base associated with the user orwith a business category that the user's business belongs to, and maydetermine that “shoes” are a product category, the intent constructor400 may use semantic reasoning or context data to determine that“yesterday” is associated with a specific date and is likely an orderdate associated with the order to be canceled.

The action monitor 404 determines that the agent 412 queries the datastore 414 for a corresponding order at reference 451. For example, theaction monitor 404 may detect that the agent 412 called a. “selectOrder”API with the customer identifier, the order date, and a keywordassociated with ordered products as arguments. The intent constructor400 may attempt to match the collected information to a known action,and may create an action record for the identified action and associatethe action record with the intent record. In some embodiments, theintent constructor 400 may further store information (e.g., in theintent record or the action record) indicating that the agent 412expected that the customer ID and the values for intent attributes“orderDate” and “productKeyword” (or “productCategory” or“orderDetails,” etc.) constituted sufficient information to identify oneor more orders in the customer's order history stored in the user datastores 414. At reference 454, the action monitor 404 determines that theagent 412 receives (i.e., from the user CRM or another service of thecomputing resource service provider) the order(s) matching the queryterms. In the illustrated example, an identifier of the exactly onematching order is returned; in other embodiments, the query may returnzero matching orders or multiple matching orders, and the agent 412 willperform other actions to satisfy the intent, as illustrated in FIG. 6.

The action monitor 404 determines that the agent 412, having access tothe selected order, initiates an order cancellation action at reference457. For example, the action monitor 404 may detect that the agent 412called a “cancelOrder” API with at least the order identifier returnedat 454 as an argument. The intent constructor 400 may attempt to matchthe collected information to a known action, and may create an actionrecord for the identified action and associate the action record withthe intent record. In some embodiments, where the intent constructor 400had stored information indicating that the agent 412 expected that thecustomer ID and the values for intent attributes “orderDate” and“productKeyword” (or “productCategory” or “orderDetails,” etc.)constituted sufficient information to identify one or more orders in thecustomer's order history, the intent constructor 400 may update theintent/action record with information confirming that queries with justthese query terms can be successful (i.e., can cause the user CRM toreturn at least one order identifier for an order that matched the queryterms). The speech sampler 402 or action monitor 404 may detect that theagent 412 provides an indication to the customer 410 that the order wascancelled at reference 461; the intent constructor 400 may createanother action record for this confirmatory communication as describedabove.

FIG. 5 illustrates an example method 500 of automatically generating oneor more contact workflows executable by an automated service agent basedon an intent data structure, such as an intent record as describedabove. At 501 the system obtains the intent data structure, such as byquerying an intent data store where the intent structure is stored, orby automatically beginning the method 500 after the intent constructorhas created a new intent record for an intent that was not previouslyrecognized by the system. At 502 the system generates an initialworkflow state for the contact workflow. In some embodiments, theinitial workflow state may indicate a first action to be performed inresponse to the agent detecting the intent. In some embodiments, thefirst action to be performed (i.e., identified by the initial workflowstate) may be to invoke the automated service agent that has been (orwill be) configured to execute the contact workflow for the intent.

At 504 the system may determine whether any intent attributes must havetheir associated values identified before the next action can beperformed. For example, if the action is to call an API to a service ora user CRM, and the API requires one or more arguments that enable theservice or CRM to identify the data to be changed or returned, thevalues for the intent attributes associated with the arguments must becollected in intermediate workflow states before the action can beperformed. In this case, at 506 the system may generate thecorresponding workflow states for collecting the required values. Forexample, if a value must be provided by the customer, the system maygenerate a workflow state comprising information for prompting thecustomer to provide the value, receiving the customer's response, anddetermining whether the input includes the requested value. In anotherexample, if a value can be obtained by querying one or more data stores,such as a knowledge base associated with the user, the system maygenerate a workflow state identifying the query action and the argumentsneeded.

After 506, or if no intermediate workflow states are needed forcollecting intent attribute values, at 508 the system may generate oneor more workflow states that result from performing the action(s) at thecurrent workflow state; these subsequent workflow states may representand identify the next action to perform for each result in the set ofvalid results of performing the current action(s). For example, wherethe current action is a database query, the system may determine, basedon the activity data, that there are three possible responses to thequery: zero results, one result, and multiple results. The system mayfurther determine that a different action should be performed inresponse to each of the three responses: if there are zero results,report this to the customer and ask the customer to re-enter values; ifthere is one result, perform the next action associated with the intentusing the returned result; and, if there are multiple results, list theresults for the customer and enable the customer to select the properresult. The system may create three workflow states and createtransitioning connections from the current workflow state to each of thethree new states, each based on the result of the current query. Thesystem may further identify the action to be performed at each of thenext workflow states.

The new workflow states are “unevaluated,” in that the system has notdetermined what to do next after the corresponding action(s) is/areperformed. At 510, the system may select one of the unevaluated workflowstates in the contact workflow. At 512, if there are actions associatedwith the selected state (i.e., the new “current state”), the systemreturns to 504 to evaluate the actions. If there are no actionsassociated with the current state, the state is a termination state thatends the contact workflow; the system may then at 514 determine whetherthere are any other unevaluated workflow states in the contact workflow,returning to 510 if so. If there are no more workflow states toevaluate, the system at 520 may stop creating the contact workflow andmay save the contact workflow for later deployment in one or morecontact centers.

FIG. 6 illustrates an example visualization 600 of a contact workflow orset of contact workflows that may be generated by the present systemsand methods to enable one or more automated service agents to resolvecustomer service issues/requests. In some embodiments, the visualization600 may be considered to show a contact workflow comprised of a seriesof interconnected contact workflows 602, 604, 606, 608, 610, 699; asingle automated service agent may be generated to execute all of thecontact workflows 602-699, or only some of the workflows 602-699, or asingle one of the workflows 602-699. For example: a first automatedservice agent may be generated to execute a contact workflow 602generated for responding to a customer request to speak to a live/humanservice agent; a second automated service agent may be generated toexecute a contact workflow 604 generated for prompting the customer tostate the intent, and then routing the contact to the applicableautomated service agent/contact workflow; a third automated serviceagent may be generated to execute a contact workflow 606 generated forresponding to a customer request to receive the customer's accountbalance; a fourth automated service agent may be generated to execute acontact workflow 608 generated for responding to a customer request toreceive a status of an order; a fifth automated service agent may begenerated to execute a contact workflow 610 generated for responding toa customer request to cancel an order (including workflow statesassociated with the identified actions described in FIG. 4, forexample); a sixth automated service agent may be generated to execute acontact workflow 699 generated for closing out a contact; and so on.

In some embodiments, more than one automated service agent and/or morethan one contact workflow may be generated and stored for automaticallyservicing existing and/or newly-discovered intents. Within a set ofautomated service agents for servicing an intent, the agents may bedifferentiated from each other based on conversational interfacesettings of each agent that are specified in the automated service agentdata structure. Using the conversational interface settings, anautomated service agent may interact with the customer and/or with acompanion human agent in different ways; the settings may be selected tooptimize interactions in different scenarios. Non-limiting examples ofconversational interface settings include: language spoken; voice (i.e.,selected from a set of preprogrammed voices having differentcharacteristics such as gender, age, accent, pitch, and cadence);speaking speed; level of expertise; speaking tone/degree of formality;duration of pauses while waiting for input; thresholds for customerinput errors, repeated prompts, etc., before transferring to a humanagent, etc. Additionally or alternatively, the values of certainconversational interface settings may be determined at the time theautomated service agent is deployed or invoked. Similarly, a set ofcontact workflows for a given intent may be differentiated by theworkflow states they contain. For example, a first contact workflow mayfully automate the contact from start to finish, while a second contactworkflow automates only part of the contact before transitioning thecontact to a human agent, and a third contact workflow transitions thecontact to a human agent immediately and then monitors the human agent'sinteractions with the customer in order to collect feedback data andrefine the corresponding data model(s) as described below.

The selection of which automated service agent and/or which contactworkflow to invoke for a given contact may be determined based on aninput context 601 identified by the contact center system after thecontact with the customer is established. An input context 601 mayinclude multiple data points that help the system determine the properservicing for the contact. Non-limiting example data points include:customer-related context, drawn from user systems, user data, or contactcenter data, such as a contact history (e.g., call frequency, trendsrelated to expressed intents in previous calls, agent notes orperformance metrics from previous contacts with customer), customersatisfaction and/or system performance data associated with thecustomer, purchase history, etc.; call-related context, such as time ofday or year, traffic volume in contact center, number of availablequalified human agents, detected sentiment of customer, originatingplatform of contact (e.g., from a “contact us” link on corporatewebsite, or a phone number or hyperlink provided in an advertisingcampaign) etc.; agent-related context, such as agent training,expertise, or performance data; and the like. In one example, activitymetrics related to past inbound and/or outbound contacts with thecustomer may indicate that servicing the contact is more efficient andthe customer is more satisfied when an agent having a certain demeanoror communication style services the contact; the system may determinewhether an automated service agent programmed with that demeanor orstyle is available, and deploy it. In another example, the normalcontact workflow for a given intent may be fully automated, but thesystem may determine via sentiment analysis (as described above) thatthe customer is irate or frustrated; the system may instead select acontact workflow where the automated service agent pre-fetches certaindata automatically, and then transitions the contact to a human agentwhile also presenting the pre-fetched data to the human agent via userinterface.

A contact center service that manages execution of the contact workflowsand automated service agents may access information needed to determinewhich workflows and/or agents to invoke. For example, a “master” contactworkflow may be stored as a lookup table or other data record comprisingidentifiers for each of the contact workflows 602-699 and the identifierfor the agent to be invoked when each contact workflow 602-699 iscalled; a master automated service agent may be created to performautomated functions for determining (e.g., based on the input context601 as described above) the proper automated service agent(s) to invoke.In another embodiment, each contact workflow 602-699 may includeinformation (e.g., stored in the appropriate workflow state) identifyingthe contact workflow to invoke in response to the customer input.Additionally or alternatively, the initial workflow state or anothersuitable workflow state in each contact workflow 602-699 may include anaction to invoke an automated service agent, along with the identifierand/or other configuration data for the agent.

FIG. 7 illustrates an example method 700 of modifying and deployingautomated service agents, incorporating user feedback to predictiveactions to update the data model, and using the data model to monitorthe progress of a new execution (e.g., at the beginning of a newproject) of the contact workflow. In some embodiments, the method 700may be performed subsequent to at least a first iteration of automatedservice agent generation as described above. For example, the automatedservice agent engine may produce a data model of the activity data, thedata model identifying the behavior pattern based on the executedinteractions; the system may generate and configure automated serviceagents based on the data model, the automated service agents in someembodiments serving as inputs to the method 700.

At 702, the system may generate a user interface for display on acomputing device of the first user. The user interface may be a controlinterface for controlling the automation of tasks and/or interactions invarious workflows using automated service agents. The user interface mayinclude a prompt for the user to indicate whether to deploy, modify,store, or delete an existing automated service agent. The user interfacemay enable the first user to accept or reject the recommendation toautomate the interaction. At 704, the system may receive user input fromthe computing device, which the first user entered in response to theprompt. At 706, the system may determine the user's choice, embodied inthe user input. If the recommendation is accepted, at 708 the system mayproceed with integrating the automated service agent into the user'scontact center environment; generally, integrating may includeconfiguring the automated service agent for deployment andscheduling/executing deployment of the automated service agent so thatthe automated service agent is invoked to execute the contact workflowwhen the contact center service detects the associated intent in thecustomer's natural language input.

If the user instead chooses to modify one or more parameters (e.g.,configuration settings, or workflow states), at 710 the system mayupdate the control interface to display interactive screens enabling theuser to enter modified values for various parameters associated with theautomated service agent, the intent, or the contact workflow. The systemreturns to 704 to receive the updated data structures. If the userchooses to store or delete (i.e., to not deploy) the automated serviceagent, at 711 the system may perform one or more tasks aborting thedeployment.

At 712, the system may generate feedback data representing subsequentusage of the contact center, whether or not the automated service agentwas deployed. That is, if the automated service agent was deployed, thefeedback data includes data describing the automated service agent'sinteractions with customers; and, if the automated service agent was notdeployed, the feedback data includes data describing the continued humanagent servicing of the customer contacts. The feedback data may includeother information associated with the automated service agent operation,the contact workflow, or the first user's decision and/or user input(i.e., into the control interface), which may be useful in refining thedata model. The control interface or another interface may additionallyenable the user to stop or modify previously deployed automated serviceagents and/or workflows; the associated user input may be used (as instep 712) to generate positive or negative (or neutral) feedback datapertaining to the stopped or modified automations.

At 714, the system may refine the data model 720 based on the feedbackdata. In some embodiments, the feedback data may be included in theongoing (e.g., real-time) predictive analysis that produces the datamodel 720 or other predictive data. For example, the feedback data maybe included in the activity data used for evaluating user and/orcustomer behavior in a feedback loop. In particular, the user input thattriggered generation of the feedback data may be treated like any otherinteraction, and the feedback data may be formatted as one or more eventmessages and/or interaction records. The system may then use the refineddata model 720 to refine the operations and performance of the automatedservice agent; the method 700 may begin again, receiving the newautomated service agent as input.

FIG. 7 further illustrates another example use of the initial or refineddata model 720: predicting the progress of execution of the contactworkflow, and monitoring a series of interactions executing the workflowto determine whether the data model is correct. At 722, the system mayreceive a request and determine that the request initiates a newexecution of the contact workflow. For example, a master automated agentconfigured to route contacts to automated and human service agents maydetect the intent and determine the associated contact workflow thatshould be executed. At 724, the system may identify, using the datamodel 720, the expected progression of activity during execution of thecontact workflow by the automated service agent. For example, the systemmay use the data model 720 to generate a prediction describing theinteractions that are expected to be requested (i.e., subsequent to therequest initiating the workflow) in order to perform the new execution.At 726, the system may then monitor the ongoing interactions todetermine whether they satisfy the prediction (i.e., conform to theexpected activity). For example, the system may receive subsequent(i.e., after initiating request) requests to perform new interactionsassociated with the contact workflow; while receiving the subsequentrequests, the system monitors the new execution of the contact workflowto determine whether the data model is satisfied or violated by the newinteractions. At 730, responsive to a determination that the data modelis violated by the new interactions, or responsive to an indication thatthe automated service agent reached a workflow state for transitioningthe contact to a human agent, the system may generate a notification ina user interface indicating that a human agent should take overexecution of the contact workflow and send the user interface to acomputing device associated with an available user agent or to a contactqueue if no user agent is available.

FIG. 8 illustrates an example method 800 for implementing aspects of thefeedback loop described with respect to FIG. 7 or another feedback loop.In some embodiments, at 802 the system has deployed an automated serviceagent to a user's contact center as described above. At 804, the systemassigns the automated service agent to a new or active contact on thecontact center; for example, the system identifies the contact workflowto be executed, determines that the automated service agent isconfigured to execute the contact workflow, and launches an instance ofthe automated service agent with a configuration to service the contact.The automated service agent begins to execute the contact workflow, andat 806 has automated at least part of the workflow. At 808 the systemdetermines that the automated service agent has reached a workflow statein which the next action or combination of actions is to transition thecontact to a human service agent.

In some embodiments, the “transition” workflow state may comprise aplanned transition to a human agent, such as when the subsequent actionsto be performed are unknown to the automated service agent and/or arenot present in the contact workflow. In another example, the automatedservice agent may be newly programmed, or user systems may haveundergone an upgrade or modification, such that confirmation of theautomated service agent's actions by a human agent would beadvantageous. Thus, at 810 the system may generate a user interfacecomprising one or more control screens that summarize the status of thecontact (e.g., the input context, the actions performed and datacollected, etc.) and may send the user interface to the computing deviceof the receiving agent. The user interface may further include one ormore prompts, such as confirmation prompts indicating that the automatedservice agent correctly or incorrectly performed the automated tasks, orthat the expected next action (i.e., predictive data generated by thesystem identifying but not executing the expected next action) iscorrect or incorrect. At 812 the system may receive user input enteredby the receiving agent in response to the prompts, and at 814 the systemmay parse the user input into feedback data and generate a datastructure storing the feedback data.

At 816 the system may continue monitoring the agent interactionsperformed to complete the transferred contact. At 818 the system maycollect and parse the monitored data to produce additional feedbackdata, and may store the additional feedback data in the data structure.At 820, while gathering the feedback data or after the contact iscompleted, the system may incorporate the feedback data structure intothe data model 720 to improve the contact workflow automation. Forexample, if the system has collected enough data verifying that theactions taken by the human agent (monitored at 816) are frequentlyperformed and/or resulted in customer satisfaction, the system maygenerate/update intent records, action records, workflow states of thecontact workflow, and the automated service agent configuration, so thatthe automated service agent can automatically perform the actions insubsequent contacts expressing the intent.

FIG. 9 provides an example method 900 for automatically generatingcontact workflows and automated user agents, which may be an alternativeor may be used in conjunction with the method 300 of FIG. 3 in which thesystem uses recorded past activity to identify intents. In the method900, the system generates a “self-forming” service agent that, at leastat first, has little or no historical data from which to train. Asillustrated, the system generates the service agent to develop newservice agents, but alternatively the system may generate the serviceagent to refine itself, or to generate contact workflows, or to generateintent records that the system uses to refine the self-forming agent.The contact workflow and automated user agent generated in the method900 may be categorized as “experimental:” as part of the automatedinteractions, the experimental agent may be configured to identifyitself to the customer as an experimental agent, and to ask the customerwhether the customer would like to help train the experimental agent orbe transferred to another functional agent.

At 902, the system determines the data connections that are available tothe contact center of a user of the computing resource service provider.For example, the system may determine that user agents of a contactcenter can access computing resource service provider data and services,as well as user CRM systems and data, as illustrated in FIG. 1. Thesystem may further use existing contact workflows, configurationsettings of the contact center, user-provided information, etc., todetermine a set of data subsystems that the service agents can interactwith using the data connections of the contact center.

At 904 the system may create one or more workflow states of a contactworkflow. A first workflow state may collect an utterance from thecustomer that will be used to identify the new intent; the next set ofstates may include prompts to the customer to identify which datasubsystem or data connection the customer thinks is associated with theexpressed intent. For example, if the available data connections are toa user account data subsystem, a billing subsystem, a payment subsystem,and a subscribed-service subsystem, a second workflow state may listthese to the customer and prompt the customer to identify thecorrect-sounding one. Thus, if the customer first states, “I want mysavings account balance,” the contact workflow instructs the automatedservice agent to process and store the utterance, and to respond with“I've not familiar with that that term, but I can access these systems.Which one sounds like the one you need?” plus a vocalization identifyingeach subsystem.

At 906, the system may determine, for each of the data connections, theset of actions that can be performed over the data connection. Forexample, the system may access the contact center configuration todetermine the corresponding set of API calls that user agents areauthorized to execute against each subsystem. At 908 the system maycreate one or more workflow states identifying the available actions tothe customer and prompting the customer to identify which action isassociated with the intent, as described above. At 910 the system maydetermine which actions are associated with following actions, orrequire values for certain intent attributes, and may create workflowstates for collecting each required value and performing each subsequentaction, until the available actions have been fully characterized in thecontact workflow.

At 912, the system may create one or more terminating workflow statesthat is/are performed once the intent, intent attributes, and action(s)have been determined via interactions between the automated serviceagent and the customer. The terminating workflow states may defineterminating actions, such as instructions for storing the intent recordsand action record generated by the automated service agent whileexecuting the contact workflow. At 914, the system may configure theexperimental agent and the experimental contact workflow as describedabove with respect to FIG. 3, and at 920 the system may store thecorresponding contact workflow and experimental agent data structures ina suitable contact center data store.

In at least some embodiments, a computing device that implements aportion or all of one or more of the technologies described herein,including the techniques to implement the functionality of a system forautomatically generating automated service agents and optimizingworkflows based on behavior patterns in user activity, can include ageneral purpose computer system that includes or is configured to accessone or more computer-accessible media. FIG. 10 illustrates such ageneral-purpose computing device 1000. In the illustrated embodiment,computing device 1000 includes one or more processors 1010 a, 1010 b,and/or 1010 n (which may be referred herein singularly as “a processor1010” or in the plural as “the processors 1010”) coupled to a systemmemory 1020 via an input/output (I/O) interface 1080. Computing device1000 further includes a network interface 1040 coupled to I/O interface1080.

In various embodiments, computing device 1000 may be a uniprocessorsystem including one processor 1010 or a multiprocessor system includingseveral processors 1010 (e.g., two, four, eight, or another suitablenumber). Processors 1010 may be any suitable processors capable ofexecuting instructions. For example, in various embodiments, processors1010 may be general-purpose or embedded processors implementing any of avariety of instruction set architectures (ISAs), such as the x86, PowerPC, SP ARC, or MIPS ISAs, or any other suitable ISA. In multiprocessorsystems, each of processors 1010 may commonly, but not necessarily,implement the same ISA.

System memory 1020 may be configured to store instructions and dataaccessible by processor(s) 1010. In various embodiments, system memory1020 may be implemented using any suitable memory technology, such asstatic random access memory (SRAM), synchronous dynamic RAM (SDRAM),nonvolatile/Flash-type memory, or any other type of memory. In theillustrated embodiment, program instructions and data implementing oneor more desired functions, such as those methods techniques, and datadescribed above, are shown stored within system memory 1020 as code 1025and data 1026. In particular, in some embodiments the code 1025 maycomprise machine-readable and executable program instructions and othersource code for implementing an automated service agent engine thatautomatically generates contact workflows and automated service agentsas described above; and, the data 1026 may comprise at least the datastructures generated by the automated service agent engine forimplementing one or more automated service agents in the contact centersof computing resource service provider users (e.g., launching instancesof an automated service agent into a virtual computing environment of auser).

In one embodiment, I/O interface 1080 may be configured to coordinateI/O traffic between processor 1010, system memory 1020, and anyperipheral devices in the device, including network interface 1040 orother peripheral interfaces. In some embodiments, I/O interface 1080 mayperform any necessary protocol, timing, or other data transformations toconvert data signals from one component (e.g., system memory 1020) intoa format suitable for use by another component (e.g., processor 1010).In some embodiments, I/O interface 1080 may include support for devicesattached through various types of peripheral buses, such as a variant ofthe Peripheral Component Interconnect (PCI) bus standard or theUniversal Serial Bus (USB) standard, for example. In some embodiments,the function of I/O interface 1080 may be split into two or moreseparate components, such as a north bridge and a south bridge, forexample. Also, in some embodiments some or all of the functionality ofI/O interface 1080, such as an interface to system memory 1020, may beincorporated directly into processor 1010.

Network interface 1040 may be configured to allow data to be exchangedbetween computing device 1000 and other device or devices 1060 attachedto a network or network(s) 1050, such as other computer systems ordevices as illustrated in FIG. 1, for example. More particularly, thenetwork interface 1040 may enable communication with systems and devices1060 of users of the computing resource service provider; such systemsmay include CRMs and other customer data systems, product inventorysystems, and other sources of user data 1062. Program code 1064 forexecuting functions and services in conjunction with the automatedservice agent engine may also be stored and executed on the user systemsand devices 1060. In various embodiments, network interface 1040 maysupport communication via any suitable wired or wireless general datanetworks, such as types of Ethernet networks, for example. Additionally,network interface 1040 may support communication viatelecommunications/telephony networks, such as analog voice networks ordigital fiber communications networks, via storage area networks, suchas Fiber Channel SANs or via any other suitable type of network and/orprotocol.

In some embodiments, system memory 1020 may be one embodiment of acomputer-accessible medium configured to store program instructions anddata for implementing embodiments of the present methods and apparatus.However, in other embodiments, program instructions and/or data may bereceived, sent or stored upon different types of computer-accessiblemedia. Generally speaking, a computer-accessible medium may includenon-transitory storage media or memory media, such as magnetic oroptical media, e.g., disk or DVD/CD coupled to computing device 1000 viaI/O interface 1080. A non-transitory computer-accessible storage mediummay also include any volatile or non-volatile media, such as RAM (e.g.,SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc., that may be included insome embodiments of computing device 1000 as system memory 1020 oranother type of memory. Further, a computer-accessible medium mayinclude transmission media or signals such as electrical,electromagnetic or digital signals, conveyed via a communication mediumsuch as a network and/or a wireless link, such as may be implemented vianetwork interface 1040. Portions or all of multiple computing devices,may be used to implement the described functionality in variousembodiments; for example, software components running on a variety ofdifferent devices and servers may collaborate to provide thefunctionality. In some embodiments, portions of the describedfunctionality may be implemented using storage devices, network devices,or special purpose computer systems, in addition to or instead of beingimplemented using general purpose computer systems. The term “computingdevice,” as used herein, refers to at least all these types of devicesand is not limited to these types of devices.

Thus, in one aspect, the description herein provides a system includingone or more hardware computing devices having a processor and memorystoring specific computer-executable instructions that, when executed bythe processor, cause the system to: receive activity data describingrecorded activity on a virtualized contact center implemented by acontact center system of a computing resource service provider andassociated with a user of the computing resource service provider, therecorded activity including a plurality of interactions by one or moreservice agents of the contact center with the contact center system andwith one or more customers of the user, the plurality of interactionshaving been performed in order to satisfy one or more customer servicerequests; identify, from a plurality of natural language inputs providedby the one or more customers during the plurality of interactions, afirst intent representing a customer service issue associated with afirst request of the one or more customer service requests; identify afirst pattern in the plurality of interactions, the first patternindicating that the one or more service agents responded to each of theplurality of natural language inputs by performing a first action on thecontact center system; determine a contact workflow describing, in aformat that renders the contact workflow executable by the contactcenter system, a plurality of potential interactions that are logicallyconnected in a progression in order to satisfy future customer servicerequests having the first intent, the plurality of potentialinteractions including the first action; generate an automated serviceagent data object including program code for executing the contactworkflow to automatically perform the first action on the contact centersystem; configure the automated service agent data object to produce afirst automated service agent that executes in a computing environmentof the contact center; and, cause the contact center system to deploythe first automated service agent into the computing environment, suchthat the first automated service agent autonomously services one or moreof the future customer service requests having the first intent.

The system may further include an electronic data store in electroniccommunication with the contact center system and storing a plurality ofintent records each associated with a corresponding intent of aplurality of intents that are known to the contact center system. Toidentify the first intent, the instructions, when executed by theprocessor, may further cause the system to: identify, in the pluralityof natural language inputs, a customer utterance that occurs in each ofthe plurality of natural language inputs; query the electronic datastore using the customer utterance to determine that the customerutterance does not identify any of the plurality of intents; and, createa first intent record including the first intent and the customerutterance. The system may further be caused to: store data describingthe first action in the first intent record, and store the first intentrecord in the electronic data store as one of the plurality of intentrecords. To identify the first intent, the instructions, when executedby the processor, may further cause the system to: identify occurrencesof the first action in the activity data; identify, from the pluralityof interactions, a subset of interactions that precede the occurrencesof the first action; and, obtain the plurality of natural languageinputs from the subset of interactions.

The instructions, when executed by the processor, may further cause thesystem to: determine, based on the activity data, that the first actionis associated with a first computer program routine that the one or moreservice agents cause the contact center system to invoke; determine aset of access parameters that enable an invocation of the first computerprogram routine; configure a first interaction of the plurality ofpotential interactions, the first interaction being associated with thefirst action, to recite the invocation of the first computer programroutine; and, to generate the automated service agent data object,include the set of access parameters in the automated service agent dataobject. The contact workflow may include a plurality of workflow states,and the instructions, when executed by the processor, may cause thesystem to: identify, based on one or both of the invocation of the firstcomputer program routine and the plurality of natural language inputs,an intent attribute associated with the first intent and having avariable value that is passed to the first computer program routine tocause the first computer program routine to produce a result associatedwith the value; and, to determine the contact workflow, create a firstworkflow state associated with receiving a first customer inputexpressing the first intent, create a second workflow state includinginstructions for obtaining a customer-supplied value for the intentattribute from the first customer input, create a third workflow stateincluding instructions for prompting a customer to provide thecustomer-supplied value and receiving a second customer input inresponse, the second workflow state transitioning to the third workflowstate when the first customer input does not contain thecustomer-supplied value, create a fourth workflow state connecting tothe third workflow state and including instructions for determining thecustomer-supplied value from the second customer input, and create afifth workflow state including instructions for executing the invocationof the first computer program routine using the customer-supplied valueand receiving the result, the fourth workflow state connecting to thefifth workflow state, and the second workflow state transitioning to thefifth workflow state when the first customer input contains thecustomer-supplied value.

In another aspect, the present description provides a system includingone or more hardware computing devices having physical computingresources including a processor and memory storing specificcomputer-executable instructions that, when executed by the processor,cause the system to implement, within an allocation of the physicalcomputing resources, a contact center system. The contact center system:receives activity data describing at least a first contact of aplurality of contacts between customers and service agents, theplurality of contacts being executed on one or more virtualized contactcenters; identifies, based at least in part on the activity data, anintent of the plurality of contacts, the intent associated with anoutcome of the first contact that is desired by a first customer;generates, based at least in part on the activity data, a plurality ofworkflow state data structures each representing a correspondingpotential interaction of a plurality of potential interactions betweenthe service agents, the customers, and the contact center system;creates logical connections between the plurality of workflow state datastructures to produce a first contact workflow with a progression thatsatisfies the intent; generates an automated service agent includingprogram code for executing the first contact workflow within the contactcenter system; and, responsive to an invocation command associated witha first contact center of the one or more virtualized contact centers,causes the first contact center to deploy an instance of the automatedservice agent to service a future contact that expresses the intent.

The activity data may include aggregated activity data describing a setof interactions associated with the plurality of contacts, the set ofinteractions including a plurality of inputs, including service agentinputs and customer inputs, entered to either initiate or respond toactions on the contact center system. The contact center systemimplemented by the system further: identifies the intent from theinputs; identifies, in the set of interactions, a pattern indicatingthat the service agents execute a first action on the contact centersystem in response to a first of the customer inputs expressing theintent; and, generates a first workflow state of the plurality ofworkflow states to include data identifying the intent as a trigger toenter the first workflow state and the first action as a task to performto complete the first workflow state. To identify the intent, thecontact center system implemented by the system may: identify from theplurality of inputs a set of the customer inputs submitted by customersin response to one or more prompts to state the customer service issue;identify a phrase common to the set of customer inputs; compare thephrase to corresponding identifier phrases each associated with one of aplurality of previously identified intents that the contact centersystem is configured to process; and, responsive to a determination thatthe phrase does not match any of the corresponding identifier phrases,create the intent and associate the phrase as the correspondingidentifier phrase of the intent. The contact center system implementedby the system further may add the intent to the plurality of previouslyidentified intents and associates the first contact workflow and theautomated service agent with the intent. The contact center system mayfurther identify, from one or both of the inputs and the first action,an intent attribute associated with the intent and having a variablevalue that is used by the service agents to perform the first action. Toproduce the contact workflow, the contact center system: generates afirst workflow state data structure including instructions for obtaininga customer-supplied value for the intent attribute from a first customerinput; generates a second workflow state data structure includinginstructions for prompting a customer to provide the customer-suppliedvalue and receiving a second customer input in response, the firstworkflow state data structure transitioning to the second workflow statedata structure when the first customer input does not contain thecustomer-supplied value; generates a third workflow state data structureincluding instructions for determining the customer-supplied value fromthe second customer input, and connects the second workflow state datastructure to the third workflow state data structure; and, generates afourth workflow state data structure including instructions forexecuting the first action using the customer-supplied value andreceiving the result, connects the third workflow state data structureto the fourth workflow state data structure, and connects the firstworkflow state data structure to the fourth workflow state datastructure when the first customer input contains the customer-suppliedvalue.

The contact center system implemented by the system may generate a firstworkflow state data structure including instructions for issuing theinvocation command, the first workflow state data structure representingan initial workflow state of the contact workflow. The activity data mayinclude recorded voice calls between the service agents and thecustomers, and the contact center system implemented by the system mayfurther cause a transcription service to convert the recorded voicecalls into text data, the contact center system identifying the intentfrom the text data. The activity data may include recorded voice callsbetween the service agents and the customers, and the contact centersystem implemented by the system further: determines, based on theactivity data associated with the first contact, that a first serviceagent performed a second action that is abnormal from the plurality ofcontacts; detects, in a first voice call of the recorded voice calls,the first voice call associated with the first contact, a firstsentiment of a first customer conducting the first voice call; generatesa second contact workflow based on the first contact workflow andinvoking the second action; and, updates the first contact workflow toinclude instructions to detect sentiment of a contacting customer and,if the sentiment is the first sentiment, transition the contact to thesecond contact workflow. The contact center system implemented by thesystem further: collects performance data associated with execution ofthe first contact workflow by the instance of the automated serviceagent while servicing future contacts; analyzes the performance data toproduce one or more optimizations of the first contact workflow; and,modifies the first contact workflow according to the one or moreoptimizations.

In yet another aspect, the present description provides a system forautomating responses to a customer service issue. The system includingone or more hardware computing devices having physical computingresources including a processor and memory storing specificcomputer-executable instructions that, when executed by the processor,cause the system to implement, within an allocation of the physicalcomputing resources, a contact center service and an automated serviceagent engine. The contact center service: configures and deploysvirtualized contact centers each associated with a corresponding user ofa plurality of users of a computing resource service provider; recordsinteractions between service agents and customers within contacts hostedby the contact centers; receives requests to perform actions associatedwith the contacts; executes the actions based on the requests; generatesactivity data describing recorded interactions and executed actions;and, launches instances of an automated service agent into the contactcenters to autonomously connect to a first customer expressing thecustomer service issue and execute a contact workflow to resolve thecustomer service issue. The automated service agent engine: obtains theactivity data from the contact center system; analyzes the activity datato produce a data model of the activity data for the contacts associatedwith the customer service issue; generates, based at least in part onthe data model, the contact workflow including a plurality of workflowstates associated with service agent actions and customer responses andconnected in a progression that satisfies the customer service issue;and, generates the automated service agent including program code forexecuting the contact workflow within the contact center service.

The activity data may describe a set of interactions associated with theprevious contacts on a first contact center associated with a first userof the plurality of users, the set of interactions including a pluralityof inputs, including service agent inputs and customer inputs, enteredto either initiate or respond to actions of the contact center service.To analyze the activity data, the automated service agent engine:identifies, from the inputs, an intent representing an intended actionof resolving the customer service issue; and identifies, in the set ofinteractions, a pattern indicating that the service agents execute afirst action on the contact center service in response to a first of thecustomer inputs expressing the intent. The automated service agentengine further: queries an electronic data store storing a plurality ofintent records each describing a corresponding intent of a plurality ofintents recognized by the contact center service, the plurality ofintent records being usable by the contact center service for servicingthe corresponding call centers of some or all of the plurality of users,to determine that the intent is not stored in the plurality of intentrecords; determines, based at least in part on user account informationassociated with the first user, a classification of the intent;generates a first intent record including the intent, theclassification, the inputs used to identify the intent, and the firstaction; and, stores the first intent record in the electronic data storeas one of the plurality of intent records, the contact center serviceusing the classification to identify a subset of the plurality of usersfor which the associated contact centers receive customers having theintent.

The contact center service further: generates a user interface fordisplay on a computing device of a first user, the user interfaceincluding a prompt enabling the first user to allow or deny deploymentof the automated service agent into a first contact center associatedwith the first user; receives user input from the computing device inresponse to the prompt; and, determines that the user input indicatesthe first user allows the deployment. The contact center service furthermay analyze the activity data to produce a plurality of performancemetrics associated with servicing of past contacts on the contactcenters. The automated service agent engine: obtains, as refinementmetrics, the plurality of performance metrics produced by analyzing theactivity data associated with the past contacts that were at leastpartially serviced by the automated service agent; produces feedbackdata based on the refinement metrics, the contact workflow, and theautomated service agent program code, the feedback data describingchanges to one or both of the contact workflow and the program code; anduses the feedback data to refine the data model.

To generate the contact workflow, the automated service agent engine:determines that the data model identifies a set of interactions;generates, of the plurality of workflow states, a first set of workflowstates each including instructions for executing a correspondinginteraction of the set of interactions; determines that the data modellacks information for automating a termination action that completes thecontact workflow; generates a final workflow state of the plurality ofworkflow states, the final workflow state including instructions fortransitioning a contact to another service agent; and, connects any ofthe plurality of workflow states that do not lead to termination to thefinal workflow state. The program code of the automated service agentmay provide information describing execution of the set of interactionsin a user interface displayed on a computing device of the human serviceagent. The final workflow state may further include instructions for:obtaining, from the contact center service, one or more agent metricsdescribing performance of the service agents in servicing the previouscontacts on a first contact center; identifying, based on the one ormore agent metrics, one or more preferred agents from the serviceagents, the one or more preferred agents being human agents or otherautomated service agents exhibiting high performance in servicing theprevious contacts associated with the customer service issue;identifying, from the one or more preferred agents, a target agent thatis active on the first contact center; and, transitioning the contact tothe target agent.

Although subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described. Rather,the specific features and acts are disclosed as illustrative forms ofimplementing the claims.

It should be understood that the above described steps of the processesillustrated in the figures can be executed or performed in any order orsequence not limited to the order and sequence shown and described inthe figures. Also, some of the above steps of the processes of thefigures can be executed or performed substantially simultaneously whereappropriate or in parallel to reduce latency and processing times.

One skilled in the art will realize that a virtually unlimited number ofvariations to the above descriptions are possible, and that the examplesand the accompanying figures are merely to illustrate one or moreexamples of implementations.

It will be understood by those skilled in the art that various othermodifications may be made, and equivalents may be substituted, withoutdeparting from claimed subject matter. Additionally, many modificationsmay be made to adapt a particular situation to the teachings of claimedsubject matter without departing from the central concept describedherein. Therefore, it is intended that claimed subject matter not belimited to the particular embodiments disclosed, but that such claimedsubject matter may also include all embodiments falling within the scopeof the appended claims, and equivalents thereof.

In the detailed description above, numerous specific details are setforth to provide a thorough understanding of claimed subject matter.However, it will be understood by those skilled in the art that claimedsubject matter may be practiced without these specific details. In otherinstances, methods, apparatuses, or systems that would be known by oneof ordinary skill have not been described in detail so as not to obscureclaimed subject matter.

Reference throughout this specification to “one embodiment” or “anembodiment” may mean that a particular feature, structure, orcharacteristic described in connection with a particular embodiment maybe included in at least one embodiment of claimed subject matter. Thus,appearances of the phrase “in one embodiment” or “an embodiment” invarious places throughout this specification is not necessarily intendedto refer to the same embodiment or to any one particular embodimentdescribed. Furthermore, it is to be understood that particular features,structures, or characteristics described may be combined in various waysin one or more embodiments. In general, of course, these and otherissues may vary with the particular context of usage. Therefore, theparticular context of the description or the usage of these terms mayprovide helpful guidance regarding inferences to be drawn for thatcontext.

What is claimed is:
 1. A system, comprising one or more hardwarecomputing devices having a processor and memory storing specificcomputer-executable instructions that, when executed by the processor,cause the system to: receive activity data describing recorded activityon a virtualized contact center implemented by a contact center systemof a computing resource service provider and associated with a user ofthe computing resource service provider, the recorded activitycomprising a plurality of interactions by one or more service agents ofthe contact center with the contact center system and with one or morecustomers of the user, the plurality of interactions having beenperformed in order to satisfy one or more customer service requests;identify, from a plurality of natural language inputs provided by theone or more customers during the plurality of interactions, a firstintent representing a customer service issue associated with a firstrequest of the one or more customer service requests; identify a firstpattern in the plurality of interactions, the first pattern indicatingthat the one or more service agents responded to each of the pluralityof natural language inputs by performing a first action on the contactcenter system; determine a contact workflow describing, in a format thatrenders the contact workflow executable by the contact center system, aplurality of potential interactions that are logically connected in aprogression in order to satisfy future customer service requests havingthe first intent, the plurality of potential interactions including thefirst action; generate an automated service agent data object comprisingprogram code for executing the contact workflow to automatically performthe first action on the contact center system; configure the automatedservice agent data object to produce a first automated service agentthat executes in a computing environment of the contact center; andcause the contact center system to deploy the first automated serviceagent into the computing environment, such that the first automatedservice agent autonomously services one or more of the future customerservice requests having the first intent.
 2. The system of claim 1,further comprising an electronic data store in electronic communicationwith the contact center system and storing a plurality of intent recordseach associated with a corresponding intent of a plurality of intentsthat are known to the contact center system, wherein to identify thefirst intent, the instructions, when executed by the processor, furthercause the system to: identify, in the plurality of natural languageinputs, a customer utterance that occurs in each of the plurality ofnatural language inputs; query the electronic data store using thecustomer utterance to determine that the customer utterance does notidentify any of the plurality of intents; and create a first intentrecord comprising the first intent and the customer utterance; thesystem further caused to: store data describing the first action in thefirst intent record; and store the first intent record in the electronicdata store as one of the plurality of intent records.
 3. The system ofclaim 2, wherein to identify the first intent, the instructions, whenexecuted by the processor, further cause the system to: identifyoccurrences of the first action in the activity data; identify, from theplurality of interactions, a subset of interactions that precede theoccurrences of the first action; and obtain the plurality of naturallanguage inputs from the subset of interactions.
 4. The system of claim1, wherein the instructions, when executed by the processor, furthercause the system to: determine, based on the activity data, that thefirst action is associated with a first computer program routine thatthe one or more service agents cause the contact center system toinvoke; determine a set of access parameters that enable an invocationof the first computer program routine; configure a first interaction ofthe plurality of potential interactions, the first interaction beingassociated with the first action, to recite the invocation of the firstcomputer program routine; and to generate the automated service agentdata object, include the set of access parameters in the automatedservice agent data object.
 5. The system of claim 4, wherein the contactworkflow comprises a plurality of workflow states, and the instructions,when executed by the processor, cause the system to: identify, based onone or both of the invocation of the first computer program routine andthe plurality of natural language inputs, an intent attribute associatedwith the first intent and having a variable value that is passed to thefirst computer program routine to cause the first computer programroutine to produce a result associated with the value; and to determinethe contact workflow: create a first workflow state associated withreceiving a first customer input expressing the first intent; create asecond workflow state comprising instructions for obtaining acustomer-supplied value for the intent attribute from the first customerinput; create a third workflow state comprising instructions forprompting a customer to provide the customer-supplied value andreceiving a second customer input in response, the second workflow statetransitioning to the third workflow state when the first customer inputdoes not contain the customer-supplied value; create a fourth workflowstate connecting to the third workflow state and comprising instructionsfor determining the customer-supplied value from the second customerinput; and create a fifth workflow state comprising instructions forexecuting the invocation of the first computer program routine using thecustomer-supplied value and receiving the result, the fourth workflowstate connecting to the fifth workflow state, and the second workflowstate transitioning to the fifth workflow state when the first customerinput contains the customer-supplied value.
 6. A system, comprising oneor more hardware computing devices having physical computing resourcesincluding a processor and memory storing specific computer-executableinstructions that, when executed by the processor, cause the system toimplement, within an allocation of the physical computing resources, acontact center system that: receives activity data describing at least afirst contact of a plurality of contacts between customers and serviceagents, the plurality of contacts being executed on one or morevirtualized contact centers; identifies, based at least in part on theactivity data, an intent of the plurality of contacts, the intentassociated with an outcome of the first contact that is desired by afirst customer; generates, based at least in part on the activity data,a plurality of workflow state data structures each representing acorresponding potential interaction of a plurality of potentialinteractions between the service agents, the customers, and the contactcenter system; creates logical connections between the plurality ofworkflow state data structures to produce a first contact workflow witha progression that satisfies the intent; generates an automated serviceagent comprising program code for executing the first contact workflowwithin the contact center system; and responsive to an invocationcommand associated with a first contact center of the one or morevirtualized contact centers, causes the first contact center to deployan instance of the automated service agent to service a future contactthat expresses the intent.
 7. The system of claim 6, wherein theactivity data comprises aggregated activity data describing a set ofinteractions associated with the plurality of contacts, the set ofinteractions including a plurality of inputs, including service agentinputs and customer inputs, entered to either initiate or respond toactions on the contact center system, and the contact center systemimplemented by the system further: identifies the intent from theinputs; identifies, in the set of interactions, a pattern indicatingthat the service agents execute a first action on the contact centersystem in response to a first of the customer inputs expressing theintent; and generates a first workflow state of the plurality ofworkflow states to include data identifying the intent as a trigger toenter the first workflow state and the first action as a task to performto complete the first workflow state.
 8. The system of claim 7, whereinto identify the intent, the contact center system implemented by thesystem: identify from the plurality of inputs a set of the customerinputs submitted by customers in response to one or more prompts tostate the customer service issue; identify a phrase common to the set ofcustomer inputs; compare the phrase to corresponding identifier phraseseach associated with one of a plurality of previously identified intentsthat the contact center system is configured to process; and responsiveto a determination that the phrase does not match any of thecorresponding identifier phrases, create the intent and associate thephrase as the corresponding identifier phrase of the intent; wherein thecontact center system implemented by the system further adds the intentto the plurality of previously identified intents and associates thefirst contact workflow and the automated service agent with the intent.9. The system of claim 7, wherein the contact center system implementedby the system further identifies, from one or both of the inputs and thefirst action, an intent attribute associated with the intent and havinga variable value that is used by the service agents to perform the firstaction.
 10. The system of claim 9, wherein to produce the contactworkflow, the contact center system implemented by the system: generatesa first workflow state data structure comprising instructions forobtaining a customer-supplied value for the intent attribute from afirst customer input; generates a second workflow state data structurecomprising instructions for prompting a customer to provide thecustomer-supplied value and receiving a second customer input inresponse, the first workflow state data structure transitioning to thesecond workflow state data structure when the first customer input doesnot contain the customer-supplied value; generates a third workflowstate data structure comprising instructions for determining thecustomer-supplied value from the second customer input, and connects thesecond workflow state data structure to the third workflow state datastructure; and generates a fourth workflow state data structurecomprising instructions for executing the first action using thecustomer-supplied value and receiving the result, connects the thirdworkflow state data structure to the fourth workflow state datastructure, and connects the first workflow state data structure to thefourth workflow state data structure when the first customer inputcontains the customer-supplied value.
 11. The system of claim 6, whereinthe contact center system implemented by the system generates a firstworkflow state data structure comprising instructions for issuing theinvocation command, the first workflow state data structure representingan initial workflow state of the contact workflow.
 12. The system ofclaim 6, wherein the activity data comprises recorded voice callsbetween the service agents and the customers, and the contact centersystem implemented by the system further causes a transcription serviceto convert the recorded voice calls into text data, the contact centersystem identifying the intent from the text data.
 13. The system ofclaim 6, wherein the activity data comprises recorded voice callsbetween the service agents and the customers, and the contact centersystem implemented by the system further: determines, based on theactivity data associated with the first contact, that a first serviceagent performed a second action that is abnormal from the plurality ofcontacts; detects, in a first voice call of the recorded voice calls,the first voice call associated with the first contact, a firstsentiment of a first customer conducting the first voice call; generatesa second contact workflow based on the first contact workflow andinvoking the second action; and updates the first contact workflow toinclude instructions to detect sentiment of a contacting customer and,if the sentiment is the first sentiment, transition the contact to thesecond contact workflow.
 14. The system of claim 6, wherein the contactcenter system implemented by the system further: collects performancedata associated with execution of the first contact workflow by theinstance of the automated service agent while servicing future contacts;analyzes the performance data to produce one or more optimizations ofthe first contact workflow; and modifies the first contact workflowaccording to the one or more optimizations.
 15. A system for automatingresponses to a customer service issue, the system comprising one or morehardware computing devices having physical computing resources includinga processor and memory storing specific computer-executable instructionsthat, when executed by the processor, cause the system to implement,within an allocation of the physical computing resources: a contactcenter service that: configures and deploys virtualized contact centerseach associated with a corresponding user of a plurality of users of acomputing resource service provider; records interactions betweenservice agents and customers within contacts hosted by the contactcenters; receives requests to perform actions associated with thecontacts; executes the actions based on the requests; generates activitydata describing recorded interactions and executed actions; and launchesinstances of an automated service agent into the contact centers toautonomously connect to a first customer expressing the customer serviceissue and execute a contact workflow to resolve the customer serviceissue; and an automated service agent engine that: obtains the activitydata from the contact center system; analyzes the activity data toproduce a data model of the activity data for the contacts associatedwith the customer service issue; generates, based at least in part onthe data model, the contact workflow comprising a plurality of workflowstates associated with service agent actions and customer responses andconnected in a progression that satisfies the customer service issue;and generates the automated service agent comprising program code forexecuting the contact workflow within the contact center service. 16.The system of claim 15, wherein: the activity data describes a set ofinteractions associated with the previous contacts on a first contactcenter associated with a first user of the plurality of users, the setof interactions including a plurality of inputs, including service agentinputs and customer inputs, entered to either initiate or respond toactions of the contact center service; to analyze the activity data, theautomated service agent engine: identifies, from the inputs, an intentrepresenting an intended action of resolving the customer service issue;and identifies, in the set of interactions, a pattern indicating thatthe service agents execute a first action on the contact center servicein response to a first of the customer inputs expressing the intent; andthe automated service agent engine further: queries an electronic datastore storing a plurality of intent records each describing acorresponding intent of a plurality of intents recognized by the contactcenter service, the plurality of intent records being usable by thecontact center service for servicing the corresponding call centers ofsome or all of the plurality of users, to determine that the intent isnot stored in the plurality of intent records; determines, based atleast in part on user account information associated with the firstuser, a classification of the intent; generates a first intent recordcomprising the intent, the classification, the inputs used to identifythe intent, and the first action; and stores the first intent record inthe electronic data store as one of the plurality of intent records, thecontact center service using the classification to identify a subset ofthe plurality of users for which the associated contact centers receivecustomers having the intent.
 17. The system of claim 15, wherein thecontact center service further: generates a user interface for displayon a computing device of a first user, the user interface comprising aprompt enabling the first user to allow or deny deployment of theautomated service agent into a first contact center associated with thefirst user; receives user input from the computing device in response tothe prompt; and determines that the user input indicates the first userallows the deployment.
 18. The system of claim 15, wherein: the contactcenter service further analyzes the activity data to produce a pluralityof performance metrics associated with servicing of past contacts on thecontact centers; and the automated service agent engine: obtains, asrefinement metrics, the plurality of performance metrics produced byanalyzing the activity data associated with the past contacts that wereat least partially serviced by the automated service agent; producesfeedback data based on the refinement metrics, the contact workflow, andthe automated service agent program code, the feedback data describingchanges to one or both of the contact workflow and the program code; anduses the feedback data to refine the data model.
 19. The system of claim15, wherein to generate the contact workflow, the automated serviceagent engine: determines that the data model identifies a set ofinteractions; generates, of the plurality of workflow states, a firstset of workflow states each including instructions for executing acorresponding interaction of the set of interactions; determines thatthe data model lacks information for automating a termination actionthat completes the contact workflow; generates a final workflow state ofthe plurality of workflow states, the final workflow state includinginstructions for transitioning a contact to another service agent; andconnects any of the plurality of workflow states that do not lead totermination to the final workflow state; the program code of theautomated service agent providing information describing execution ofthe set of interactions in a user interface displayed on a computingdevice of the human service agent.
 20. The system of claim 19, whereinthe final workflow state further includes instructions for: obtaining,from the contact center service, one or more agent metrics describingperformance of the service agents in servicing the previous contacts ona first contact center; identifying, based on the one or more agentmetrics, one or more preferred agents from the service agents, the oneor more preferred agents being human agents or other automated serviceagents exhibiting high performance in servicing the previous contactsassociated with the customer service issue; identifying, from the one ormore preferred agents, a target agent that is active on the firstcontact center; and transitioning the contact to the target agent.